我有一个变量,当回声出现时如下所示:

var1
var one
var_one
var_one (1)

我想把它逐行读入一个数组,但是当我这样做的时候,我得到了一个错误:
-sh: cannot open var1
var one
var_one
var_one (1): File name too long

我使用这个命令:
read -a names < $myVar

最佳答案

您需要使用herestring:

read -a names <<< $myVar

< $myVar告诉shell从一个由$myvar的内容命名的文件中读取,即一个名为var1\nvar one\nvar_one\nvar_one (1)的文件(带有文本换行符)。很明显,文件不存在,所以您得到了错误。<<< $myVar告诉shell将变量本身的内容读取为输入,而不是由它命名的文件。
如果shell没有herestring,则必须echo它:
echo "$myVar" | read -a names

关于linux - 如何逐行读取变量?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/18469763/

10-13 08:46