我試圖在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
。我猜這是一個問題,結合的反標和單/雙引號..但我不知道什麼解決方案是。
爲什麼你需要使用反引號?只需運行該命令並執行'PID = $!' – Barmar
在現代shell中,您應該使用$(stdout emission)來代替\ stdout emission \' –
哦,我明白了,您正在獲取進程的PID由'su'運行,而不是'su'過程。 – Barmar