Bash:最简洁的方法是将一串空格读入两个变量

时间:2018-01-13 01:03:28

标签: bash

我有一个字符串变量line="foo bar"。我想将其读入两个变量$foo$bar

我的代码不起作用:

read foo bar < <($line)

这导致:

-bash: foo: command not found

1 个答案:

答案 0 :(得分:1)

read -r foo bar <<< "$line"
  • <(list):这称为process substitution。执行列表,然后使用文件名引用输出。 $line扩展为foo barbash然后尝试使用一个参数foo执行bar。因此错误foo: command not found

  • <<< word:这称为here stringword被扩展,结果作为单个字符串提供,并附加换行符。 $line扩展为"foo bar"并正确提供给read命令

  • -r:使用read不会破坏任何反斜杠

您也可以像这样更改代码(此处字符串更好):

read -r foo bar < <(echo "$line")