我得到了作业,我需要测试它是否$1
是一个文件,特殊文件或文件夹Case $1
In 语句。
我尝试了一些东西但无法使其发挥作用。您对如何实现这个有任何想法(在案例陈述中)
我需要实现的是:
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
当 stat 失败(文件不存在)时它仍然显示错误,但它工作正常。谢谢