Linux 如何使用重定向到其中的字符串执行while循环
我试图循环一个包含HTTP链接的字符串和换行符,我想一次循环一行 目前我有Linux 如何使用重定向到其中的字符串执行while循环,linux,bash,newline,while-loop,delimiter,Linux,Bash,Newline,While Loop,Delimiter,我试图循环一个包含HTTP链接的字符串和换行符,我想一次循环一行 目前我有 echo -e "$HTTP_LINKS" | while read HTTP_S_LINK ; do TEST_STRING="test" done 但这样我就不能访问循环外的测试字符串,这正是我想要的。 我使用while循环,这样它就可以循环通过$HTTP_链接中的每一个新行,而不仅仅是字符串中的单词。(我不想在IFS设置为的情况下使用for循环\n) 我想也许我可以这样做 #!/bin/bash whil
echo -e "$HTTP_LINKS" | while read HTTP_S_LINK ; do
TEST_STRING="test"
done
但这样我就不能访问循环外的测试字符串,这正是我想要的。
我使用while循环,这样它就可以循环通过$HTTP_链接中的每一个新行,而不仅仅是字符串中的单词。(我不想在IFS设置为的情况下使用for循环\n)
我想也许我可以这样做
#!/bin/bash
while read HTTP_S_LINKS
do
TEST_STRING="test2"
done < $HTTP_LINKS
#/bin/bash
在阅读HTTP\u S\u链接时
做
TEST_STRING=“test2”
完成<$HTTP\u链接
但是当然,这不起作用,因为$HTTP\u LINKS包含一个字符串,而不是指向文件的链接。如果在循环外部初始化并导出TEST\u string变量,则在循环之后应该可以访问它 你的第二个snipit的想法是正确的,但是你需要通过
使用“Here Strings”,我在循环之前完成了“export TEST_STRING=0”,但是$TEST_STRING在循环之后仍然返回0。不需要导出,只是不要使用创建子shell(也称为管道)的构造。这不是导出的工作方式,也不是它的用途。它是用来将变量放入子进程,而不是从子进程中取出的。啊,就是这样,一个子外壳。我知道有一个词,我只是忘了它是什么。所以是3个重定向,嗯。谢谢你有什么链接可以让我进一步阅读3个重定向的内容吗?@Mint:这不是“3个重定向”,
#!/bin/bash
HTTP_LINKS=$(echo -e "http://www.aaa.com\nhttp://www.bbb.com")
unset TEST_STRING;
while read url;
do
((TEST_STRING++))
done <<<"$HTTP_LINKS"
echo $TEST_STRING
2