実行されたコマンドが成功したかどうかを確認する必要があります。 test.shに次のコードを入れて実行しましたが、内容は一覧表示されますが/home
警告が表示されます。
./test.sh: 3: ./test.sh: [[: not found
次のコマンドの問題
#!/bin/sh
ls /home/
if [[ "$?" != 0 ]]; then
echo "Commnad Error"
else
echo "Commnad Success"
fi
答え1
エラーによると:
./test.sh: 3: ./test.sh: [[: not found
あなたのものはbashとは関係/bin/sh
ありません。単一の角かっこを使用するか、コマンドのみを使用してください。数値条件にも使用できます。特定のケースには効果がありますが、これは悪い習慣です。bash
[[
[
test
-ne
!=
答え2
エラーが検出されましたif [[ "$?" != 0 ]]; then
数値比較は使用されるのではなく、!=
使用する-ne
必要があります。
また、最後に実行されたコマンドの終了コード状態の正しい構文には$?
引用符がありません。
if [[ $? -ne 0 ]]; then
答え3
私はあなたがそのような警告を使用できるので、スクリプトを実行するためにdash
使用していると思います。/bin/sh
link
bash
#!/bin/bash
答え4
ダッシュはあり[[
ません[
。しかし、あるとしても選ぶ[
理由があります。 (電子はより直接的で速く、パターンの欠陥に適応することができます)。if your_command
your_command; if [ $? = 0 ]
set -e