我刚刚遇到了几个答案,例如解析一个分隔的文本文件......使用构造:
while IFS=, read xx yy zz;do
echo $xx $yy $zz
done < input_file
Run Code Online (Sandbox Code Playgroud)
其中IFS
变量设置在read
命令之前。
我一直在阅读bash 参考,但无法弄清楚为什么这是合法的。
我试过
$ x="once upon" y="a time" echo $x $y
Run Code Online (Sandbox Code Playgroud)
从 bash 命令提示符,但没有得到任何回应。有人可以指出我在引用中定义该语法的位置,该引用允许以这种方式设置 IFS 变量吗?这是特殊情况还是我可以用其他变量做类似的事情?
像下面的命令,
if true; then
IFS=":" read a b c d e f <<< "$test"
Run Code Online (Sandbox Code Playgroud)
书中说,当赋值命令(IFS ":"
)在主命令(read a b c d e f <<< "$value"
)之前使用时,它的值暂时对主命令有效。因此,该read
命令使用 delimiter :
。
但是,就像这个命令,
if true; then
HOME="hello" echo "$HOME"
Run Code Online (Sandbox Code Playgroud)
回声消息不是你好。上述命令的真正含义是什么?