我收到“二元运算符预期”或“太多参数”的Bash错误,它指向第二行代码(if语句)。如果top_dir没有空格,则错误消失。如果我需要使用带空格的top_dir,我该如何修复此代码?
log_dir="${top_dir}/${group}"
if [ ! -d $log_dir ]; then
mkdir -p "${log_dir}"
fi
谢谢!
答案 0 :(得分:2)
更改您的if
,来自:
if [ ! -d $log_dir ]; then
为:
if [ ! -d "${log_dir}" ]; then
答案 1 :(得分:1)
使用[ ... ]
,您需要引号以防止扩展:
if [ ! -d "$log_dir" ]; then
使用[[ ... ]]
,您可以省略引号,并且不会发生扩展:
if [[ ! -d $log_dir ]]; then
示例:
$ x='a b'
$ mkdir "$x"
$ [ -d "$x" ] && echo "$x exists"
a b exists
$ [[ -d $x ]] && echo "$x exists"
a b exists