我在~/.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] 删除。
我来说两句