EXPECTスクリプトを実行するスクリプトと、終了コードを含む生成されたプロセスを実行しようとしています。しかし、生成されたプロセスの終了コードをメインスクリプトに取得できません。私は成功として常にゼロになっています。
スクリプトは次のとおりです。
[Linux Dev:anr ]$ cat testexit.sh
#!/bin/bash
export tmp_script_file="/home/anr/tmp_script_temp.sh"
cp /home/anr/tmp_script $tmp_script_file
chmod a+x $tmp_script_file
cat $tmp_script_file
expect << 'EOF'
set timeout -1
spawn $env(tmp_script_file)
expect {
"INVALID " { exit 4 }
timeout { exit 4 }
}
EOF
echo "spawned process status" $?
rm -f $tmp_script_file
echo "done"
生成されたスクリプト:
[Linux Dev:anr ]$ cat tmp_script
exit 3
Expectスクリプトの実行:
[Linux Dev:anr ]$ ./testexit.sh
exit 3
spawn /home/anr/tmp_script_temp.sh
spawned process status 0
done
問題は、生成された出口の戻りコードを取得してスクリプトを期待できないことです。生成されたスクリプトの終了コード3をメインスクリプトにしたいのですが、メインスクリプトは終了コード3で終了する必要があります。
生成された終了コードをメインスクリプトに取得するのを手伝ってください。
グレンの助けを借りて、私は解決策を得ました...そして私の最終的なスクリプトは::
期待されるスクリプトは
[Linux Dev:anr ]$ cat testexit.sh
#!/bin/bash
export tmp_script_file="/home/anr/tmp_script_temp.sh"
cp /home/anr/tmp_script $tmp_script_file
chmod a+x $tmp_script_file
cat $tmp_script_file
expect << 'EOF'
set timeout -1
spawn $env(tmp_script_file)
expect {
"INVALID " { exit 4 }
timeout { exit 4 }
eof
}
foreach {pid spawnid os_error_flag value} [wait] break
if {$os_error_flag == 0} {
puts "exit status: $value"
exit $value
} else {
puts "errno: $value"
exit $value
}
EOF
echo "spawned process status" $?
rm -f $tmp_script_file
echo "done"
生成されたスクリプト:
[Linux Dev:anr ]$ cat tmp_script
exit 3
Expectスクリプトの実行:
[Linux Dev:anr ]$ ./testexit.sh
exit 3
spawn /home/anr/tmp_script_temp.sh
exit status: 3
spawned process status 3
done
グレンにもう一度感謝します。
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加