use*_*394 3 shell bash quoting group
我正在编写一个 bash 脚本,其中我想检查传递给它的参数之一是否为有效组。
我有线路
if [ `grep -c -e '\b$2\b' /etc/group` -eq 0 ]; then
echo "Error: $2 is not a valid group."
else
Run Code Online (Sandbox Code Playgroud)
这总是告诉我有效的组无效。
我认为这是一个逃避问题;我认为这是为一个名为$2
. 错误消息正确显示了传递的参数。但是我不确定我$2
是否正确地在反引号内转义。
我如何让这条线工作?
使用grep
's-q
选项比命令替换更有效。
if ! grep -q -e "^$2:" /etc/group; then
echo "Error: $2 not a valid group" >&2
fi
Run Code Online (Sandbox Code Playgroud)
问题是单引号 ( '
) 会阻止 shell 变量扩展 ( $
)。您需要使用双引号 ( "
)。