escaping - Bash missing ']' error for output -


i wrote function in ~/.bashrc file clean configuration files of comments. function follows:

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

basically states if user doesn't pass 2nd argument, use # comment character , clean. first argument file itself. function "works" when run ; character clean, following:

[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 

it escapes character fine, bash: [: missing ']' line @ top. i've tried changing [[ -z "$2"]] causes bash.bashrc not load @ all.

any ideas? version info below:

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

the space before closing ] not optional:

[ -z "$2" ] #        ^ 

without it, command ok when $2 empty, becomes [ -z ].

the same applies [[ ... ]], don't have quote variables inside:

[[ -z $2 ]] 

Comments

Popular posts from this blog

sublimetext3 - what keyboard shortcut is to comment/uncomment for this script tag in sublime -

java - No use of nillable="0" in SOAP Webservice -

ubuntu - Laravel 5.2 quickstart guide gives Not Found Error -