Bash 或等于 ||= 就像 Ruby

发布于 2024-11-27 01:32:19 字数 625 浏览 1 评论 0原文

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)]\$ '

Does Bash have something like ||= ?

I.e., is there a better way to do the following:

if [ -z $PWD ]; then PWD=`pwd`; fi

I'm asking because I get this error:

$ echo ${`pwd`/$HOME/'~'}
-bash: ${`pwd`/$HOME/'~'}: bad substitution

So, my plan is to do:

if [ -z $PWD ]; then PWD=`pwd`; fi
echo ${PWD/$HOME/'~'}

My real question is: "Is there a better way to do the following?"

# ~/.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)]\$ '

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

小伙你站住 2024-12-04 01:32:19

Bash 允许使用默认值:

a=${b-`pwd`}

如果 $b 未定义,则使用 pwd 来分配 $a

Bash allows for default values:

a=${b-`pwd`}

If $b is undefined, then pwd is used instead in assigning $a.

又爬满兰若 2024-12-04 01:32:19

您可以使用以下命令将提示设置为工作目录:

PS1='\w '   # Using \W will provide just basename

You can set your prompt to be the working directory with this:

PS1='\w '   # Using \W will provide just basename
玻璃人 2024-12-04 01:32:19

另一个解决方案(在我看来更类似于 Ruby 的或等于)是:

[ -n $PWD ] || PWD=`pwd`

Another solution (which is more akin to Ruby's or-equals in my opinion) would be:

[ -n $PWD ] || PWD=`pwd`
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文