Bash是否有像|| =?
这样的东西即,是否有更好的方法来执行以下操作:
if [ -z $PWD ]; then PWD=`pwd`; fi
我问,因为我收到了这个错误:
$ echo ${`pwd`/$HOME/'~'}
-bash: ${`pwd`/$HOME/'~'}: bad substitution
所以,我的计划是:
if [ -z $PWD ]; then PWD=`pwd`; fi
echo ${PWD/$HOME/'~'}
我真正的问题是:“有没有更好的方法来执行以下操作?”
# ~/.bash_profile
# Set prompt to RVM gemset, abbr. of current directory & (git branch).
PROMPT_COMMAND='CUR_DIR=`pwd|sed -e "s!$HOME!~!"|sed -E "s!([^/])[^/]+/!\1/!g"`'
PS1='$(~/.rvm/bin/rvm-prompt g) [$CUR_DIR$(__git_ps1)]\$ '
答案 0 :(得分:17)
Bash允许使用默认值:
a=${b-`pwd`}
如果未定义$b
,则会使用pwd
代替$a
。
答案 1 :(得分:2)
您可以将提示设置为工作目录:
PS1='\w ' # Using \W will provide just basename
答案 2 :(得分:2)
另一个解决方案(在我看来更类似于Ruby的or-equals)将是:
[ ! -z $MyVar ] || MyVar='value'