2016-02-10 66 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文件。 –