我写了一个函数,在我的~/.bashrc
文件中清除注释的配置文件。功能如下:Bash丢失']'错误输出
clean_config()
{
[ -z "$2"] && CLEANCHAR="#" || CLEANCHAR="$2"
egrep -v "^[[:space:]]*${CLEANCHAR}|^$" "$1" | uniq
}
基本上,如果用户没有通过第二个参数,使用#
作为注释符,寻找和清洁它指出。第一个参数只是文件本身。功能“作品”但是当我;
运行它作为清洁的性格,我得到如下:
[[email protected]]: /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根本无法加载。
任何想法?下面的版本信息:
[[email protected]]: ~ # bash --version | head -n1
GNU bash, version 4.3.11(1)-release (x86_64-pc-linux-gnu)
choroba的答案是正确的,但请注意,您可以通过使用'CLEANCHAR = $ {2 - #}'来简化代码。还要注意,如果指定一个正则表达式元字符CLEANCHAR,该函数将无法正常工作。 – pjh