试图找出chmod是否失败

时间:2016-12-02 01:08:57

标签: bash shell chmod

我只是想知道是否有任何方式可以说'如果chmod没有更改文件的权限,那么......'

if ! chmod ${1} ${2}  #if chmod did not excecute correctly
then
echo "${0}:ERROR: ${2} has not been changed." 1>&2
exit 6 #exiting due to failure. status 6
fi

我尝试了这个以及其他几种方法,但我只能添加到当前设置而不是更改它......

即如果我以-rwxr-xr-x开头,我将其更改为-rwxrwxrwx

似乎没有其他工作

1 个答案:

答案 0 :(得分:1)

你的命令是正确的。但它只检测chmod何时无法运行(例如,当您不拥有该文件时,当FS是只读时等)。

如果你还想检测chmod没有改变任何东西,试试这个:

if ! res=$(chmod -c -- "${1}" "${2}") || [ -z "$res" ]
then
    echo "${0}:ERROR: ${2} has not been changed." 1>&2
    exit 6 #exiting due to failure. status 6
fi

-c标志特定于GNU chmod。这是描述:

-c, --changes
    like verbose but report only when a change is made

-v, --verbose
    output a diagnostic for every file processed