linux - 修改 bash 脚本,使其在检查实体类型后,还列出输入实体的详细信息
问题描述
PASSED=$1
if [ -f $PASSED ]; then
echo "$PASSED is a file"
ls -l $PASSED
elif [ -d $PASSED ]; then
echo "$PASSED is a directory"
ls -l $PASSED
else
"$PASSED is invalid"
fi
在终端,当我推送文件输入时,比如 demo.sh,输出正确打印为:“demo.sh is a file”rwxr-xr-x 1 system system 12 Jan 16 03:12 26 14:47 demo。嘘
但是对于一个目录,比如云,它给出:云是一个目录,总数为 0
我应该怎么做才能纠正这个问题?
解决方案
如 ls 的手册页所示:
-d, --directory
list directories themselves, not their contents
在您当前的实现中,当您只对目录使用 -l 时, ls 将显示目录的内容。要仅列出目录的属性,请使用 -d 和 -l 等:
ls -ld $PASSED
推荐阅读
- swift - 邮件附件中的空 Core Data Sqlite 数据库
- firebase - flutter 状态管理失败
- c# - Microsoft.Office.Interop.Excel.dll' 引用相同的元数据,但只有一个是链接引用
- python - 按标准差大熊猫分组
- yaml - Open API:从 yaml 文件生成属性模式 JSON 以在 UI 上添加验证
- sql - 如果月份结束,如何仅选择值
- sql - Select Distinct Not working in Spring with DSL Context
- azure - 通过 devOps 部署时,Azure 策略不会为托管标识创建角色
- spring - 要在级联删除时删除的关系行
- algorithm - 关于为玩家分配角色的算法问题