在配置Symfony 2
项目期间,需要为cache
和log
目录设置适当的权限。
文档说要以两种方式完成。其中一个是使用setfacl
修饰符调用-m
命令。但是并非每个版本都包含此修改器。是否可以检查此命令或任何其他命令是否允许设置某些修改器?
例如,使用以下伪代码:
if [ checkmods --command=setfacl --modificator=-m ]
setfacl -m ....
else
chmod ...
答案 0 :(得分:1)
您可以通过运行setfacl --help
来解析使用情况信息,并检查是否包含修改器。例如:
if setfacl --help | grep -q -- -m,
then
echo "setfacl -m supported"
else
echo "setfacl -m not supported"
fi
如果要对任何具有--help
选项的命令执行此操作,请查看bash-completion文件中可用的_parse_help
函数。
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
}