脚本文件中的变量替换并设置新变量

时间:2017-04-07 18:47:48

标签: bash shell scripting

我尝试在shell脚本中运行命令,并使用生成的进程ID设置变量。剥离到相关部分,我有:

#!/bin/bash
USER=myAppUser
PATH_TO_APP=/opt/folder/subfolder
PID=`su - $USER -c 'nohup $PATH_TO_APP/myapp --option > /dev/null 2>&1 & echo $!'`;  
echo $PID

我理解我需要在nohup命令周围使用双引号进行变量替换,但如果我这样做,则PID未被设置。如果我使用双引号并对PATH_TO_APP进行硬编码,则会执行并设置PID。我猜测后退和单/双引号的结合是一个问题..但我不确定解决方案是什么。

1 个答案:

答案 0 :(得分:0)

将命令放在双引号中,以便$PATH_TO_APP替换$,然后转义$!中的su,这样它就会被包含在PID=$(su - $USER -c "nohup $PATH_TO_APP/myapp --option > /dev/null 2>&1 & echo \$!") echo $PID 的参数中,然后由子shell处理。

for (int j = 0; j > i; j++)