为什么此表达式有效cat > d.txt <<< "$val"
且cat > d.txt <<< $val
无效?据我所知,<<<
将变量值重定向到stdin。我是对的吗?
答案 0 :(得分:5)
cat >d.txt <<<$val
不包含空格, $val
就可以正常工作。否则,必须使用双引号来防止$val
中的每个单词被视为单独的参数。
例如,如果你有
val="a b"
cat >d.txt <<<$val
shell试图做的是
cat >d.txt <<<a b
所以只提供“a”作为输入,而“b”只是cat
的另一个参数。
使用双引号
val="a b"
cat >d.txt <<<"$val"
现在shell执行
cat >d.txt <<<"a b"
所以整个字符串“a b”被视为输入。