由于目录名中有空格而导致Bash错误
我得到一个Bash错误“预期的是二进制运算符”或“参数太多”,它指向第二行代码(if语句)。如果top_dir没有空格,错误就会消失。如果需要使用带空格的top_dir,如何修复此代码由于目录名中有空格而导致Bash错误,bash,Bash,我得到一个Bash错误“预期的是二进制运算符”或“参数太多”,它指向第二行代码(if语句)。如果top_dir没有空格,错误就会消失。如果需要使用带空格的top_dir,如何修复此代码 log_dir="${top_dir}/${group}" if [ ! -d $log_dir ]; then mkdir -p "${log_dir}" fi 谢谢 如果更改您的,请从: if [ ! -d $log_dir ]; then 致: 使用[…]时,需要使用引号来防止扩展: if [
log_dir="${top_dir}/${group}"
if [ ! -d $log_dir ]; then
mkdir -p "${log_dir}"
fi
谢谢 如果更改您的
,请从:
if [ ! -d $log_dir ]; then
致:
使用[…]
时,需要使用引号来防止扩展:
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
这里不需要花括号;只有引用才重要。这是真的,但使用大括号是一个好习惯。这就是为什么我把它也加在这里。会自动识别并报告您的问题。哇,shellcheck.net是一个很好的资源。谢谢分享!
$ x='a b'
$ mkdir "$x"
$ [ -d "$x" ] && echo "$x exists"
a b exists
$ [[ -d $x ]] && echo "$x exists"
a b exists