[問題] 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