在 POSIX shell 脚本中,是否可以将多个命令参数存储到变量中,然后在命令中扩展该变量?
例如,给定以下将参数传递给的代码find
,就可以将单词参数传递给命令:
rootname="$1"
case "$(uname)" in
Darwin)
mode='+111'
;;
Linux)
mode='/111'
;;
esac
if [ -n "$INCLUDE_SYMLINK" ]; then
find "${rootname}" -perm "${mode}" \( -type f -or -type l \)
else
find "${rootname}" -perm "${mode}" -type f
fi
但是,是否可以将多个单词参数(例如\( -type f -or -type l \)
单词集)放入变量并将其扩展回来以执行以下操作(这不起作用,因为引用将所有内容都放在 1 个单词内):
if [ -n "$INCLUDE_SYMLINK" ]; then
type_arg='\( -type f -or -type l \)'
else
type_arg='-type f'
fi
find "${rootname}" -perm "${mode}" ${type_arg}