2016-02-10 348 views
0

我試圖寫一個bash腳本運行幾個情況下,操作步驟如下編輯在同一文件中的一行:bash腳本來連接字符串,並使用bash腳本

  1. .txt文件在陣列
  2. 串聯陣列中的每個元素與特定的字符串
  3. 開口幾個屏幕中分離的模式,然後改變特定文件 (在這種情況下seq.txt)並運行一些命令

的代碼如下:

COUNTER=0 
readarray t1Gad < t1_gad.txt 
while [ $COUNTER -lt 5 ]; do 
    NUM_DEVICE=8 
    DEVICE_NO=`expr $COUNTER % $NUM_DEVICE` 
    string1='objGa_' 
    string2=${t1Gad[$COUNTER]} 
    #string2='hello' 
    string=$string1$string2 
    echo $string2 
    echo $string1 
    echo $string 
    screen -d -m -S "$COUNTER" bash -c 'cd $HOME/Downloads && sed -i '2s/.*/$string/' seq.txt && cat seq.txt; exec sh' 
    let COUNTER=COUNTER+1 
done 

有趣的是,如果我有一個固定的字符串替換string2,它工作正常,但它不與數組的數組元素的工作。

如果有人向我解釋,我會很高興。我對bash腳本非常陌生,但非常想學習這個非常有用但又醜陋的腳本語言。

我發現問題,但我不知道如何解決它。在進行字符串連接時,比如說

string1="objGa_" 
string="$string1${t1Gad[$COUNTER]}" 

(說192是特定的元素),並在這種情況下它是代

objGa_192 ' ' 

在屏幕的內部。我不知道如何擺脫這個空間以及它來自哪裏。

t1_gad.txt:

100 
200 
300 
400 
500 

seq.txt:

abc 
objw 
cde 
efg 
xyz 

回答

1

readarray地方在每個變量,這似乎的端部的空白來導致問題與sed命令。

一種優雅的方式擺脫trailng空白的是管串xargs

string2=$(echo ${t1Gad[$COUNTER]} | xargs) 
+0

沒有......沒有解決方案正在.... .txt文件就像是沒有空間將aColumn在每一列之間...我看到某處2s代表編輯第二行...在sed –

+0

你可以在你的問題中包含't1_gad.txt'和'seq.txt'嗎? –

+0

我在問題中添加了.txt文件。 –