我是 bash 新手。當我運行以下命令:
grep "type" /root/myFile | cut-d'=' -f2
我得到以下資訊:
102
304
503
442
我想將第一個命令的內容儲存到一個變數中,這樣該變數的內容就相當於這樣宣告它:
myVariable="102 304 503 442"
我不知道該怎麼辦。我是否myVariable
使用空字串進行初始化並逐行遍歷命令列的內容並將其附加到 myVariable 中,中間有空格,或者是否有更簡單的方法可以使用 bash 執行此操作?
答案1
您可以bash
使用命令替換然後參數擴展來自行完成此操作。
首先使用命令替換將命令的輸出放入變數中$()
,然後使用參數擴展將所有換行符號替換為空格${variable//$'\n'/ }
:
$ myVariable=$(grep "type" /root/myFile | cut-d'=' -f2)
$ myVariable=${myVariable//$'\n'/ }
$ echo $myVariable
102 304 503 442
但為了可重複使用性和清潔性,你最好使用陣列:
myArray=( $(grep "type" /root/myFile | cut-d'=' -f2) )
並以通常的方式迭代數組元素。
答案2
myVariable=`grep "type" /root/myFile | cut-d'=' -f2`
運行反引號 (`) 之間的內容並將輸出分配給myVariable
.
如果您目前的輸出由換行符號 ( \n
) 分隔,那麼您可能需要將它們替換為空格,例如tr
:
myVariable=`grep "type" /root/myFile | cut-d'=' -f2`|tr '\n' ' '`
注意:有些人喜歡使用$()
語法而不是反引號,但兩者都很有用,當我可以選擇時,我會使用反引號。兩者兼具的真正優點是,如果您想在兩個層級處理執行,因為反引號表達式將首先傳送到子 shell,然後$()
執行該部分。