如何做一个redirect到它的stringwhile循环

即时通讯尝试循环,但HTTP链接内部和换行符的string,我想循环在一行一次。

目前我有

echo -e "$HTTP_LINKS" | while read HTTP_S_LINK ; do TEST_STRING="test" done 

但是这样我就无法访问循环中的TEST_STRING,这正是我想要的。 我正在使用while循环,以便循环通过$ HTTP_LINKS中的每个换行符,而不仅仅是string中的单词。 (我不想用IFS设置为\ n的for循环)

我想也许我可以做这样的事情

 #!/bin/bash while read HTTP_S_LINKS do TEST_STRING="test2" done < $HTTP_LINKS 

但是当然这不起作用,因为$ HTTP_LINKS包含一个string而不是一个文件的链接。

Solutions Collecting From Web of "如何做一个redirect到它的stringwhile循环"

你有第二个snipit正确的想法,但你需要通过<<<语法使用“这里字符串”。 你不能访问你的第一个$TEST_STRING之外的$TEST_STRING ,因为管道创建了一个子shell; 使用这里字符串不。 此外,请确保您引用"$HTTP_LINKS"否则您将失去换行符。

 #!/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 

如果初始化并在循环外部导出TEST_STRING变量,则应在循环之后访问它。