想知道here-string(here-document)和pipe的正确用法是什么.
例如,
a='a,b,c,d'
echo $a | IFS=',' read -ra x
IFS=',' read -ra x <<< $a
Run Code Online (Sandbox Code Playgroud)
两种方法都有效.那么这两个功能有什么区别?
我对"阅读"的另一个问题是:
IFS=',' read x1 x2 x3 x4 <<< $a
Run Code Online (Sandbox Code Playgroud)
不起作用,x1的值为"abc d",而x2,x3,x4没有值
但如果:
IFS=',' read x1 x2 x3 x4 <<< "$a"
Run Code Online (Sandbox Code Playgroud)
我可以得到x1 = a,x2 = b,x3 = c,x4 = d一切都好!
有谁能解释一下?
提前致谢
我是 Bash 新手,我发现 Bash 会自动进行分词:
a="1 2 3 4"
Run Code Online (Sandbox Code Playgroud)
如果我用echo $a我得到的回显“a” 1 2 3 4,它就隐式地进行了分词。如果我循环“a”,我分别得到 1、2、3 和 4。
我还从这里读到
shell 扫描未出现在双引号内的参数扩展、命令替换和算术扩展的结果以进行分词。
我还发现如果我有
b=$a;
echo "$b"
Run Code Online (Sandbox Code Playgroud)
我会得到
"1 2 3 4"
Run Code Online (Sandbox Code Playgroud)
所以,这是我的问题:分词什么时候完成?它会改变字符串本身吗?是不是只有使用echoor for(循环)才生效?
更一般地说,bash 如何处理它?