i686/32ビットデュアルCPUで新しいDebian Stretchインストールを使用してOctave 4.2.1をインストールし、./mytest
実行権限を付与した後、次を実行しました。
#!/bin/bash
./mytest.m
どこでtest.m
読むか
#!/usr/bin/octave
exit(0)
に保存されている2つのスクリプトを~/tmp
考えると、mytest
#!/bin/bash
if $1/mytest.m "$2"; then
echo "good"
else
echo "bad"
fi
そしてmytest.m
#!/usr/bin/octave
param = argv(){1};
if strcmp(param, "happyend")
exit(0)
else
exit(1)
end
Running は normally に渡され、次に に渡され、tmp/mytest tmp happyend
信号 0 を再度渡し、「good」を印刷します。では、変数から戻り(終了)コードをどのように取得できますか? (上記の例では0)。happyend
mytest
mytest.m
mytest
mytest.m
直感的なオプション
#!/bin/bash
result=$("$1"/mytest.m "$2")
if [ $result = 0 ]; then
echo "good"
else
echo "bad"
fi
不可能。
ベストアンサー1
コマンドから戻り(終了)コードを取得するには、値$?
を次の変数に保存する必要がありますresult
。
"$1/mytest.m" "$2"
result=$?
if [ "$result" -eq 0 ]; then
echo "good"
else
echo "bad"
fi
テストするのに長い時間結果を保存するには、result
次のコマンドを使用して変数をスキップします。
"$1/mytest.m" "$2"
if [ $? -eq 0 ]; then
echo "good"
else
echo "bad"
fi
しかし、注意して$?
テストした直後にmytest.mを実行する必要があります。以降のコマンドは彼らにコードを返します$?
。
結果がゼロであることをテストしたい場合は、それを整数として扱う必要はありません。コマンド自体を条件と考えてください。
if "$1/mytest.m" "$2"; then
echo "good"
else
echo "bad"
fi