一个 bash 脚本,用于连接字符串并使用 bash 脚本在同一文件中编辑一行
A bash script to concatenate strings and editing a line in the same file using a bash script
我试图为 运行 编写一个 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 ' '
屏幕内。我不知道如何摆脱那个 space 以及它来自哪里。
t1_gad.txt:
100
200
300
400
500
seq.txt:
abc
objw
cde
efg
xyz
readarray
在每个变量的末尾放置一个空格,这似乎导致 sed
命令出现问题。
摆脱尾部空格的一种优雅方法是将字符串通过管道传输到 xargs
:
string2=$(echo ${t1Gad[$COUNTER]} | xargs)
我试图为 运行 编写一个 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 ' '
屏幕内。我不知道如何摆脱那个 space 以及它来自哪里。
t1_gad.txt:
100
200
300
400
500
seq.txt:
abc
objw
cde
efg
xyz
readarray
在每个变量的末尾放置一个空格,这似乎导致 sed
命令出现问题。
摆脱尾部空格的一种优雅方法是将字符串通过管道传输到 xargs
:
string2=$(echo ${t1Gad[$COUNTER]} | xargs)