我有一个字符串变量line="foo bar"
。我想将其读入两个变量$foo
和$bar
。
我的代码不起作用:
read foo bar < <($line)
这导致:
-bash: foo: command not found
答案 0 :(得分:1)
read -r foo bar <<< "$line"
<(list)
:这称为process substitution。执行列表,然后使用文件名引用输出。 $line
扩展为foo bar
,bash
然后尝试使用一个参数foo
执行bar
。因此错误foo: command not found
<<< word
:这称为here string。 word
被扩展,结果作为单个字符串提供,并附加换行符。 $line
扩展为"foo bar"
并正确提供给read
命令
-r
:使用read
不会破坏任何反斜杠
您也可以像这样更改代码(此处字符串更好):
read -r foo bar < <(echo "$line")