Bash
從 cut 語句生成帶有空格分隔符的單詞字元串
我是 bash 的新手。當我執行以下命令時:
grep "type" /root/myFile | cut-d'=' -f2
我得到以下資訊:
102 304 503 442
我想將第一個命令的內容儲存到一個變數中,這樣變數的內容就相當於像這樣聲明它:
myVariable="102 304 503 442"
我不知道該怎麼做。我是否
myVariable
使用空字元串進行初始化並逐行遍歷命令行的內容並將其附加到 myVariable 中,中間有空格,或者是否有更簡單的方法來使用 bash 執行此操作?
myVariable=`grep "type" /root/myFile | cut-d'=' -f2`
執行反引號 (
) 之間的內容並將輸出分配給
myVariable`.如果您目前的輸出由換行符 (
\n
) 分隔,那麼您可能希望將它們替換為空格,tr
例如:myVariable=`grep "type" /root/myFile | cut-d'=' -f2`|tr '\n' ' '`
注意:有些人更喜歡使用
$()
語法而不是反引號,但兩者都很有用,當我可以選擇時,我會使用反引號。兩者兼有的真正優勢是,如果您想在兩個級別上處理執行,因為反引號表達式將首先發送到子 shell,然後該$()
部分將被執行。
您可以
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) )
並以通常的方式遍歷數組元素。