予想されるプロセスからPIDを取得する方法は?

予想されるプロセスからPIDを取得する方法は?

例:シェルスクリプトで、次を使用してSSHトンネルを開きます。

/usr/bin/expect <<EOD
set timeout -1
spawn ssh -fNL localhost:1873:localhost:873 HOST
expect "*?assword:" { send "$SSHPASS\r"}
sleep 2
exit [exp_pid]
EOD

export SSH_PID=$?
echo $SSH_PID

$ SSH_PIDには数値がありますが、生成されたSSHのPIDではありません。私は成功せずに様々な方法を試しました。どんなアイデアがありますか?

ベストアンサー1

シャットダウン状態は8ビット整数なので(ほとんどのシェル(ksh93は例外)はシグナルを受け取ったプロセスにビット8を使用するため、これを7ビットに切り捨てます。)したがって、pidが0から127の場合にのみ有効です。終了状態の代わりにパイプから:

SSH_PID=$(
expect <<EOD
...
spawn -noecho ssh ...
puts [exp_pid]
...
EOF
)

おすすめ記事