我正在尝试编写一个脚本,在开始时它只在用户是以下之一时运行:Peter,Paul,Simon:
我做:
if [[ "$(whoami)" != peter && "$(whoami)" != paul && "$(whoami)" != simon]]; then
echo -e "\nPlease run this script as someone who is allowed" >&2
exit 1
fi
我明白了:
syntax error in conditional expression: unexpected token `;'
任何提示?或者更好的是,这是一个更好的方法吗?
由于
答案 0 :(得分:6)
你忘了在最后添加一个空格:
... != simon ]]
另外,如果你可以考虑使用扩展的globs,你可以这样简单:
shopt -s extglob
if [[ $(whoami) != @(peter|paul|simon) ]]; then
还有一种老式但POSIX兼容的方式:
case $(whoami) in
peter|paul|simon)
;;
*)
echo -e "\nPlease run this script as someone who is allowed" >&2
exit 1
;;
esac
答案 1 :(得分:3)
]]
之前的空格字符,konsolebox's answer是正确的。
但是如果你不想搞乱扩展的globs,你可以使用regexp:
if [[ $(whoami) =~ ^(peter|paul|simon)$ ]]; then
甚至
if [[ $USER =~ ^(peter|paul|simon)$ ]]; then