过去的旧建议是对任何涉及 a 的表达式加双引号$VARIABLE
,至少在希望 shell 将其解释为单个项目的情况下,否则,内容中的任何空格$VARIABLE
都会脱离 shell。
但是,我知道在较新版本的 shell 中,不再总是需要双引号(至少出于上述目的)。例如,在bash
:
% FOO='bar baz'
% [ $FOO = 'bar baz' ] && echo OK
bash: [: too many arguments
% [[ $FOO = 'bar baz' ]] && echo OK
OK
% touch 'bar baz'
% ls $FOO
ls: cannot access bar: No such file or directory
ls: cannot access baz: No such file or directory
Run Code Online (Sandbox Code Playgroud)
在zsh
,而另一方面,同样的三个命令成功。因此,基于此实验,似乎在 中bash
可以省略 内部的双引号[[ ... ]]
,但不能省略内部 …
我想在 bash 脚本中使用 POSIX 字符类,并且我有以下内容(它不起作用)。我不知道如何分组才能满足长度条件。
^[[:upper:]][[:lower:]]+[[:upper:]]*[[:digit:]]+$
{8,15} 应该去哪里?