Shell-Script
為什麼試圖擷取 PID 導致我的 shell 腳本神秘地終止?
我正在使用 CentOS 7。我正在嘗試在腳本變數中擷取程序的“主 PID”。這是我的腳本
#!/bin/sh set -e PID="$APP_ROOT/shared/pids/puma.pid" echo "before ..." MASTER_PID=`pgrep -f '^([^ ]*/)?puma '` echo "after ..." xxx
但是,永遠不會列印出“after …”這個詞。這條線有點東西
MASTER_PID=`pgrep -f '^([^ ]*/)?puma '`
這導致事情表現不佳,尤其是在沒有執行 puma 程序的情況下。有誰知道重寫上述內容的方法,以便我可以擷取我的主 PID,或者如果它不存在,至少允許執行傳遞到下一行?
如果要保留
set -e
,則需要通過以下方式防止 pgrep 失敗:MASTER_PID=`pgrep -f '^([^ ]*/)?puma ' || true`
set -e
如果命令以非零狀態退出,則立即退出。由於
pgrep
沒有匹配時失敗,因此PID
您無法執行echo "after"
語句。我認為,刪除
set -e
應該可以解決您的問題。