Bash

從 cut 語句生成帶有空格分隔符的單詞字元串

  • June 24, 2016

我是 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) )

並以通常的方式遍歷數組元素。

引用自:https://unix.stackexchange.com/questions/291926