0

在项目配置期间,需要为和目录Symfony 2设置适当的权限。cachelog

文档说以两种方式进行。其中之一是setfacl使用修饰符调用命令-m。然而,并非每个版本都包含此修改器。是否可以检查此命令或任何其他命令是否允许设置一些修改器?

例如使用以下伪代码:

if [ checkmods --command=setfacl --modificator=-m ]
  setfacl -m ....
else
  chmod ...
4

1 回答 1

1

setfacl --help您可以通过运行并检查是否包含修饰符来解析使用信息。例如:

if setfacl --help | grep -q -- -m,
then
    echo "setfacl -m supported"
else
    echo "setfacl -m not supported"
fi

如果您想对任何具有该--help选项的命令执行此操作,请_parse_help查看 bash-completion 文件中可用的功能。

http://anonscm.debian.org/gitweb/?p=bash-completion/bash-completion.git;a=blob;f=bash_completion

# Parse GNU style help output of the given command.
# @param $1  command; if "-", read from stdin and ignore rest of args
# @param $2  command options (default: --help)
#
_parse_help()
{
    eval local cmd=$( quote "$1" )
    local line
    { case $cmd in
        -) cat ;;
        *) LC_ALL=C "$( dequote "$cmd" )" ${2:---help} 2>&1 ;;
      esac } \
    | while read -r line; do

        [[ $line == *([ $'\t'])-* ]] || continue
        # transform "-f FOO, --foo=FOO" to "-f , --foo=FOO" etc
        while [[ $line =~ \
            ((^|[^-])-[A-Za-z0-9?][[:space:]]+)\[?[A-Z0-9]+\]? ]]; do
            line=${line/"${BASH_REMATCH[0]}"/"${BASH_REMATCH[1]}"}
        done
        __parse_options "${line// or /, }"

    done
}
于 2013-04-10T09:04:56.910 回答