[问题] bash传递命令结果到阵列的不同方式有差

楼主: LIAR (玻璃做的大叔)   2018-02-24 12:44:02
我需要在bash里面把上万笔的资料丢到array中,我用过两种方式
mapfile -t -s 1 lines<<<$(ls -lrt /tmp/)
echo ${lines[@]}
新版的clonezilla这个命令是有效的。2.4.5-23版或centos则是空的。
mapfile -t -s 1 lines< <(ls -lrt /tmp/)
echo ${lines[@]}
这样有东西。
那个<<<中间两个或三个没有,和$的有无是搭配的,不能混用,不然会错。
我看鸟哥的教学,我只用过 $(command) 这种方式。但反而这个写法无法得到array。
虽然有爬文找redirection和Here Strings的解释,但我还是搞不懂两种写法的差别,
而且也搞不懂clonezilla新旧版的执行结果为何也不同。
请问有人知道两种写法的差别和原理吗?
作者: sppmg (sppmg)   2018-02-24 13:59:00
<<<是string输入, man bash至于版本不同,会不会是所用的Shell改过
楼主: LIAR (玻璃做的大叔)   2018-02-24 17:45:00
啊...我找到process substitution的说明了,这真的不好懂耶

Links booklink

Contact Us: admin [ a t ] ucptt.com