gpt4 book ai didi

escaping - Bash 缺少 ']' 输出错误

转载 作者:行者123 更新时间:2023-11-29 09:42:58 25 4
gpt4 key购买 nike

我在我的 ~/.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为空时命令才OK,所以它变成了[-z]

同样适用于[[ ... ]],但你不必引用里面的变量:

[[ -z $2 ]]

关于escaping - Bash 缺少 ']' 输出错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35232140/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com