看板 Linux 關於我們 聯絡資訊
我需要在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) -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 180.176.36.231 ※ 文章網址: https://www.ptt.cc/bbs/Linux/M.1519447448.A.AB5.html
sppmg: <<<是string輸入, man bash 02/24 13:59
sppmg: 至於版本不同,會不會是所用的Shell改過 02/24 14:00
LIAR: 啊...我找到process substitution的說明了,這真的不好懂耶 02/24 17:45