when someone abandons you,it is him that gets loss because he lost someone who truly loves him but you just lost one who doesn’t love you.
实不相瞒,茫茫 bash 世界,随着 shell 脚本看的越来越多,发现懂得东西也是越来越少,这不,上周在看 git bash 下 git_prompt.sh 的时候,又发现一个神奇的 ${PS1-}
完整的脚本片段如下:
1 | if [ "${PS1-}" ]; then |
这个 ${PS1-} 的 - 是个啥情况,引用变量不是直接 $PS1 就好了吗?
原来这货不仅仅是对的,而且比直接 $PS1 还来的更加强大,它的大名叫 ${parameter-word} 参数扩展,关于它更多的 “家族” 信息可以点这里查询
用一段实际操作来展示一下这个参数扩展的含义
1 | # test 变量并不存在 |
总结一下:
${parameter-word} 会验证 parameter 是不是存在,如果不存在,就将 word 设置成 parameter 变量的值,那如果我想在它是空值的时候把 word 赋值它呢,那就用 ${parameter:-word}
其实在直接使用 echo 的时候并不能看出参数扩展的作用,但当你打开 set -u 的时候,就会发现这个形式的作用了
1 | $ set -u # 当试图使用一个未声明的变量时将报错 |
be slow to promise and quick to perform.