$1
仕事を得ましたが、それがファイルなのか、特殊なファイルなのか、フォルダなのかをテストする必要があります。ケース$1
ステートメント。
いくつか試してみましたが、うまくいきませんでした。これを実装する方法に関するアイデアはありますか(in Caseステートメント)
私が達成しなければならないことは次のとおりです。
if [ -f $1 ]
then
exit 1
elif [ -d $1 ]
then
exit 2
elif [ -c $1 -o -b $1 ]
then
exit 3
else
exit 0
fi
私は最終的なコードを要求するのではなく、次のことを行う方法を求めることです。
Case $1 in
-d) ...
答え1
if
あなたが投稿したベースコードは十分に単純に見えるので、構文を使用するための要件はcase
少し奇妙です。以下を提供するファイル形式情報を検索できるようですls -l
。
case "$(ls -ld -- "$1")" in
-*) echo 'Regular file' ;;
d*) echo 'Directory' ;;
*) echo 'other' ;;
esac
答え2
私が選んだ解決策は次のとおりです。
filetype=$(stat -c%F "$1")
exitcode=$?
if [ $exitcode -eq 0 ]
then
case "$filetype" in
"regular file") exit 1;;
"directory") exit 2;;
*) exit 3;;
esac
else
exit 0
fi
統計が失敗すると(ファイルが存在しない)、まだエラーが表示されますが、正常に動作します。ありがとう