我试图编写一个bash脚本来运行以下步骤中的几种情况:
.txt
数组中的文件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
readarray
在每个变量的末尾放置一个空格,这似乎导致该sed
命令出现问题。
摆脱尾随空白的一种优雅方法是将字符串传递给xargs
:
string2=$(echo ${t1Gad[$COUNTER]} | xargs)
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句