一个bash脚本,用于使用bash脚本连接字符串并在同一文件中编辑一行

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了一个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
答案

readarray在每个变量的末尾放置一个空格,这似乎导致了sed命令的问题。

摆脱尾随空格的一种优雅方式是将字符串传递给qazxsw poi:

xargs

以上是关于一个bash脚本,用于使用bash脚本连接字符串并在同一文件中编辑一行的主要内容,如果未能解决你的问题,请参考以下文章

do 循环的 Bash 脚本,用于检测经过的时间段然后继续

如何创建一个 bash 脚本来检查 SSH 连接?

通过 netcat 连接并在 bash 脚本中发送命令

用于打开外壳、在外壳中运行命令并保持外壳运行的 Bash 脚本

sh watch是一个linux bash脚本,用于递归监视文件修改并在发生更改时执行bash命令

sh react是一个linux bash脚本,用于递归监视文件修改并在发生更改时执行bash命令