Bash 输出缺少“]”错误
Bash missing ']' error for output
我在 ~/.bashrc
文件中编写了一个函数来清除配置文件的注释。函数如下:
clean_config()
{
[ -z ""] && CLEANCHAR="#" || CLEANCHAR=""
egrep -v "^[[:space:]]*${CLEANCHAR}|^$" "" | uniq
}
基本上它声明如果用户没有传递第二个参数,使用 #
作为注释字符来查找和清理。第一个参数只是文件本身。函数 "works" 但是当我 运行 它以 ;
作为要清理的字符时,我得到以下信息:
[root@server]: /etc/php5/fpm/pool.d # clean_config www.conf \;
bash: [: missing `]'
[www]
user = www-data
group = www-data
listen = /var/run/php5-fpm.sock
listen.owner = www-data
listen.group = www-data
它可以很好地转义字符,但我总是在顶部看到 bash: [: missing ']'
行。我尝试将其更改为 [[ -z ""]]
,但这会导致 bash.bashrc 根本无法加载。
有什么想法吗?版本信息如下:
[root@server]: ~ # bash --version | head -n1
GNU bash, version 4.3.11(1)-release (x86_64-pc-linux-gnu)
关闭]
前的space不可选:
[ -z "" ]
# ^
没有它,命令只有在</code>为空时才OK,所以变成了<code>[ -z ]
。
同样适用于[[ ... ]]
,但你不必引用里面的变量:
[[ -z ]]
有bash parameter expansions提供这种"default value"作业:
$ set -- x "second arg"
$ CLEANCHAR=${2:-#}
$ echo "$CLEANCHAR"
second arg
$ set -- x
$ CLEANCHAR=${2:-#}
$ echo "$CLEANCHAR"
#
$ set -- x ""
$ CLEANCHAR=${2:-#}
$ echo "$CLEANCHAR"
#
${x:-default}
表示:如果 $x
未设置或为空,则使用 "default" 值
我在 ~/.bashrc
文件中编写了一个函数来清除配置文件的注释。函数如下:
clean_config()
{
[ -z ""] && CLEANCHAR="#" || CLEANCHAR=""
egrep -v "^[[:space:]]*${CLEANCHAR}|^$" "" | uniq
}
基本上它声明如果用户没有传递第二个参数,使用 #
作为注释字符来查找和清理。第一个参数只是文件本身。函数 "works" 但是当我 运行 它以 ;
作为要清理的字符时,我得到以下信息:
[root@server]: /etc/php5/fpm/pool.d # clean_config www.conf \;
bash: [: missing `]'
[www]
user = www-data
group = www-data
listen = /var/run/php5-fpm.sock
listen.owner = www-data
listen.group = www-data
它可以很好地转义字符,但我总是在顶部看到 bash: [: missing ']'
行。我尝试将其更改为 [[ -z ""]]
,但这会导致 bash.bashrc 根本无法加载。
有什么想法吗?版本信息如下:
[root@server]: ~ # bash --version | head -n1
GNU bash, version 4.3.11(1)-release (x86_64-pc-linux-gnu)
关闭]
前的space不可选:
[ -z "" ]
# ^
没有它,命令只有在</code>为空时才OK,所以变成了<code>[ -z ]
。
同样适用于[[ ... ]]
,但你不必引用里面的变量:
[[ -z ]]
有bash parameter expansions提供这种"default value"作业:
$ set -- x "second arg"
$ CLEANCHAR=${2:-#}
$ echo "$CLEANCHAR"
second arg
$ set -- x
$ CLEANCHAR=${2:-#}
$ echo "$CLEANCHAR"
#
$ set -- x ""
$ CLEANCHAR=${2:-#}
$ echo "$CLEANCHAR"
#
${x:-default}
表示:如果 $x
未设置或为空,则使用 "default" 值