回答:
#!/bin/sh
if [ "$#" -ne 1 ] || ! [ -d "$1" ]; then
echo "Usage: $0 DIRECTORY" >&2
exit 1
fi
変換:引数の数が(数値的に)1でない場合、または最初の引数がディレクトリでない場合は、使用状況をstderrに出力し、エラーステータスコードで終了します。
よりわかりやすいエラーレポート:
#!/bin/sh
if [ "$#" -ne 1 ]; then
echo "Usage: $0 DIRECTORY" >&2
exit 1
fi
if ! [ -e "$1" ]; then
echo "$1 not found" >&2
exit 1
fi
if ! [ -d "$1" ]; then
echo "$1 not a directory" >&2
exit 1
fi
if [ "$#" -ne 1 ] ; then
かif ! [ -d "$1" ]; then
を切り取って作成するか、どちらの句が問題を引き起こしているかを確認してください。
-d
。別のチェックを追加する場合は-e
、存在をチェックするために使用できます。
-e
ファイルが存在する場合はtrueを返します。わかりやすいエラー報告を回答に追加しました。
猫のscript.sh
var1=$1
var2=$2
if [ "$#" -eq 2 ]
then
if [ -d $var1 ]
then
echo directory ${var1} exist
else
echo Directory ${var1} Does not exists
fi
if [ -d $var2 ]
then
echo directory ${var2} exist
else
echo Directory ${var2} Does not exists
fi
else
echo "Arguments are not equals to 2"
exit 1
fi
以下のように実行します-
./script.sh directory1 directory2
出力は次のようになります-
directory1 exit
directory2 Does not exists
shell
という意味/bin/sh