bash傳遞命令結果到陣列的不同方式有差 - Linux

By Hardy
at 2018-02-24T12:44
at 2018-02-24T12:44
Table of Contents
我需要在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新舊版的執行結果為何也不同。
請問有人知道兩種寫法的差別和原理嗎?
--
起初,他們追殺共產主義者,我沒有說話,因為我不是共產主義者;
接著,他們追殺猶太人,我沒有說話,因為我不是猶太人;
後來,他們追殺工會成員,我沒有說話,因為我不是工會成員;
此後,他們追殺天主教徒,我沒有說話,因為我是新教教徒;
最後,他們奔我而來,卻再也沒有人站起來為我說話了。
《First They Came(他們首次來時)》,Martin Niemoller牧師(1892-1984)
--
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新舊版的執行結果為何也不同。
請問有人知道兩種寫法的差別和原理嗎?
--
起初,他們追殺共產主義者,我沒有說話,因為我不是共產主義者;
接著,他們追殺猶太人,我沒有說話,因為我不是猶太人;
後來,他們追殺工會成員,我沒有說話,因為我不是工會成員;
此後,他們追殺天主教徒,我沒有說話,因為我是新教教徒;
最後,他們奔我而來,卻再也沒有人站起來為我說話了。
《First They Came(他們首次來時)》,Martin Niemoller牧師(1892-1984)
--
Tags:
Linux
All Comments

By Callum
at 2018-02-26T13:45
at 2018-02-26T13:45

By Kama
at 2018-03-02T07:26
at 2018-03-02T07:26

By Erin
at 2018-03-03T14:38
at 2018-03-03T14:38
Related Posts
素梅派安裝OPENCV問題

By Bethany
at 2018-02-23T17:13
at 2018-02-23T17:13
關於 win8.1 跟 ubuntu 雙系統安裝

By Faithe
at 2018-02-23T14:59
at 2018-02-23T14:59
無法更新Antergos

By Charlie
at 2018-02-23T14:27
at 2018-02-23T14:27
「Ubuntu軟體」的已安裝列表

By Jacky
at 2018-02-22T14:40
at 2018-02-22T14:40
syslogd 的設定檔?

By Cara
at 2018-02-19T19:00
at 2018-02-19T19:00