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

Hardy avatar
By Hardy
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)

--
Tags: Linux

All Comments

Callum avatar
By Callum
at 2018-02-26T13:45
<<<是string輸入, man bash
Kama avatar
By Kama
at 2018-03-02T07:26
至於版本不同,會不會是所用的Shell改過
Erin avatar
By Erin
at 2018-03-03T14:38
啊...我找到process substitution的說明了,這真的不好懂耶

素梅派安裝OPENCV問題

Bethany avatar
By Bethany
at 2018-02-23T17:13
如標題:我從網路上按照步驟操作但是一直跳出下列的錯誤 鑒於本身是程式新手上網搜尋方法都似懂非懂想請教版上高手 [ 12%] Linking CXX static library ../../lib/libopencv_core_pch_dephelp.a [ 12%] Built target openc ...

關於 win8.1 跟 ubuntu 雙系統安裝

Faithe avatar
By Faithe
at 2018-02-23T14:59
各位好, 我之前有在我的筆電上裝雙系統, 筆電預設是安裝 Win8.1,只有一顆硬碟 然後我用硬碟管理,壓縮出了約 10 GiB 的未配置空間 然後把 Ubuntu ISO 用 daemon tool 裝在 USB 裡面, 接著就調整 BIOS,然後重開機之後, 系統就直接進入 Ubuntu 安裝過程像一般 ...

無法更新Antergos

Charlie avatar
By Charlie
at 2018-02-23T14:27
試過圖形界面(GUI)的更新方式與指令列的方式(sudo pacman -Syu),但結果都是失 敗。 系統顯示的訊息如下: resolving dependencies... looking for conflicting packages... error: failed to prepare tran ...

「Ubuntu軟體」的已安裝列表

Jacky avatar
By Jacky
at 2018-02-22T14:40
Android Studio和Eclipse安裝後 已經在正常使用 為什麼「Ubuntu軟體」的已安裝列表 有列出Android Studio 卻沒列出Eclipse thanks - ...

syslogd 的設定檔?

Cara avatar
By Cara
at 2018-02-19T19:00
鳥哥看到的還有 google 找到的設定檔都說是 /etc/syslog.conf 但是我剛剛在主機裡想看一下內容沒有這個檔案~ ps -ef|grep syslog 確定有這隻程式在跑 改用 find / -name syslog.conf 尋找 找到一個檔案 /etc/audisp/plugins.d ...