我试图编写一个脚本来修改和运行另一个脚本。每次我尝试使用sed替换我的其他脚本中的命令行时,该命令实际执行而不是作为字符串发送到另一个脚本。以下是最低工作示例。我无法弄清楚我做错了什么。我想只运行脚本1,然后运行脚本2几次。谢谢!
脚本1:
#!/bin/bash
./script2.sh
./script2.sh
./script2.sh
lineNo=3
var2=(var=$(( RANDOM % 399 )))
sed -i "${lineNo}s/.*/"${var2[@]}"/" script2.sh
./script2.sh
./script2.sh
./script2.sh
脚本2:
#!/bin/bash
var=$(( RANDOM % 199 )) #This line should be replaced with "var=$(( RANDOM % 399 ))" but instead is getting replaced with "var=90" (or some other random number). i.e. the command is executing.
<... Do stuff with random number stored in $var...>
答案 0 :(得分:2)
将字符串嵌入单引号中。
var='$(( RANDOM % 199 ))'
答案 1 :(得分:0)
脚本1需要围绕我试图发送到另一个脚本的命令的单引号:
#!/bin/bash
lineNo=3
var2='var=$(( RANDOM % 399 ))'
sed -i "${lineNo}s/.*/$var2/" script2.sh
现在命令进入脚本2而不是沿途执行。