小编dra*_*ang的帖子

"here string"和echo + pipe之间有什么区别?

想知道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 pipe heredoc

8
推荐指数
1
解决办法
1698
查看次数

Bash 分词机制

我是 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 如何处理它?

string bash shell

3
推荐指数
1
解决办法
4419
查看次数

标签 统计

bash ×2

heredoc ×1

pipe ×1

shell ×1

string ×1