在我的 .bashrc 文件中,我有:
if [ -f /etc/bash_completion ] && ! shopt -oq posix; then . /etc/bash_completion; fi
我想用[]
它来代替if then fi
我已经有了
[ -f ~/.bash_aliases ] && source ~/.bash_aliases
[ "${BASH_VERSINFO[0]}" -ge 4 ] && shopt -s autocd
[ -f ~/.git-completion.bash ] && source ~/.git-completion.bash
所以我想也许我可以用
[ [ -f /etc/bash_completion ] && [! shopt -oq posix] ] && . /etc/bash_completion
但我得到
-bash: [: -f: binary operator expected
答案1
你可以直接连锁&&
,不需要巢这里的条件:
[ -f /etc/bash_completion ] && ! shopt -oq posix && . /etc/bash_completion
作品。
答案2
您混淆了两个命令。[
不等于if
.[
相当于test
.
if
甚至不是一个简单的命令,而是一个保留字(如[[
),控制结构的一部分。if ... then ... else ... fi
几乎等于... && { ...; true; } || { ... }