【发布时间】:2019-11-17 01:44:11
【问题描述】:
我正在尝试更改作为命令行参数给出的文件的文件权限。请帮帮我
整个问题陈述如下:
编写一个shell脚本,将文件的读写权限更改为对所有文件的读、写和执行权限。
如果文件存在显示为,
“文件存在!”
否则显示为,
“文件不存在”
如果文件有读写权限显示为,
“文件权限已更改”
假设文件名作为命令行参数给出。
下面是我试过的代码。
f="$1"
if [ -e $f ]
then echo "File Exists!"
elif [ ! -e $f ]
then
echo "File does not Exist" && exit
fi
if [ -w $f ] && [ -r $f ]
then
chmod o-rw $f && echo "File Permission has been changed"
fi
预期输出:
样本输出1:
文件存在! 文件权限已更改
样本输出2:
文件不存在
实际结果:
失败的测试用例 2
文件权限未设置
【问题讨论】:
-
如何运行你的脚本?对 $1 文件显示 ls -l。也不需要额外检查 elif -e
-
您想为所有用户设置权限还是只为您设置权限?你也可以分享 ls -l $file 输出的输出。 chmod u+w 只授予所有者写入权限,它不授予您写入文件的权限。所以运行chmod u+w后,文件还是不能被你写,
-
同样在最后一个 if 语句中,您只检查写入,而不检查写入和读取
-
您说对于第二个测试用例的预期输出,它应该声明该文件不存在。但是,你又说他们失败的测试用例没有设置权限。如果测试用例 2 的文件不应该存在,您正在检查哪个文件以查看权限是否更改?如果您可以向我们提供您的工作目录的
ls -la以及您用于测试用例的实际命令,将会有所帮助。
标签: shell unix file-permissions