重击缺少输出的']'错误

斯科特·克鲁克斯

我在~/.bashrc文件中编写了一个函数来清除注释的配置文件。功能如下:

clean_config()
{
    [ -z "$2"] && CLEANCHAR="#" || CLEANCHAR="$2"
    egrep -v "^[[:space:]]*${CLEANCHAR}|^$" "$1" | uniq
}

基本上,它说明用户是否不传递第二个参数,#用作注释字符以进行查找和清理。第一个参数只是文件本身。该功能“有效”,但是当我将其;作为要清除的字符运行时,得到以下信息:

[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 "$2"]]但这导致bash.bashrc根本无法加载。

有任何想法吗?下面的版本信息:

[root@server]: ~ # bash --version | head -n1
GNU bash, version 4.3.11(1)-release (x86_64-pc-linux-gnu)
疾病

关闭前的空格]不是可选的:

[ -z "$2" ]
#        ^

没有它,该命令只有在$2为空时才可以,因此变为[ -z ]

同样适用于[[ ... ]],但您不必在其中引用变量:

[[ -z $2 ]]

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章