我尝试在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
。我猜测后退和单/双引号的结合是一个问题..但我不确定解决方案是什么。
答案 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++)