【发布时间】:2018-12-29 03:33:50
【问题描述】:
我对@987654321@ 脚本缺乏经验,主要是从谷歌搜索中拼凑出一些东西。以下简单脚本创建文件 foo 并将其权限位更改为脚本的 $1 。有经验的bash 脚本编写者能否告知什么是正确和/或有效的方法来确保$1 是有效的权限位,即有效的arg1 到chmod?
#!/bin/sh
#mkfoo.sh
if [ $# -eq 0 ]
then
return
fi
perm=$1
touch ./foo
chmod "${perm}" ./foo
由于我缺乏经验,我不清楚变量何时/为什么是字符串或整数。字符串验证方法感觉不可行,因为权限位可能有很多值。我想到的是我想验证 是否 $1 是一个整数,如果是,它在 0 到 777 之间。但我不清楚这是否是一个足够/有效的验证: 我对 linux 文件权限有一个初步的了解,我相信有很多微妙之处。感谢您的帮助。
【问题讨论】:
-
为什么需要验证?如果出现错误,您打算怎么做?
-
这并不容易,因为
chmod允许复杂的符号权限规范,例如u+r,o-w。为什么不直接检查chmod是否成功? -
权限位为
4 2 1,用于读取、写入和执行;排序为 user、group 和 other,因此 198 介于 0 和 777 之间但无效,因此验证不足。我正要提到象征性表示,但 Barmar 已经提到了。 -
如果你只想允许数字权限,你可以检查它是否匹配模式
[0-7][0-7][0-7] -
@StoneThrow,猜测一下(不是我):这个问题相当简单,并且在 bash 中验证一个整数(因为您似乎不关心
chmod的其他权限选项)有被问了很多次,应该可以通过谷歌找到
标签: linux bash file-permissions chmod