在项目配置期间,需要为和目录Symfony 2
设置适当的权限。cache
log
文档说以两种方式进行。其中之一是setfacl
使用修饰符调用命令-m
。然而,并非每个版本都包含此修改器。是否可以检查此命令或任何其他命令是否允许设置一些修改器?
例如使用以下伪代码:
if [ checkmods --command=setfacl --modificator=-m ]
setfacl -m ....
else
chmod ...
在项目配置期间,需要为和目录Symfony 2
设置适当的权限。cache
log
文档说以两种方式进行。其中之一是setfacl
使用修饰符调用命令-m
。然而,并非每个版本都包含此修改器。是否可以检查此命令或任何其他命令是否允许设置一些修改器?
例如使用以下伪代码:
if [ checkmods --command=setfacl --modificator=-m ]
setfacl -m ....
else
chmod ...
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
}