SHELL variables default value, ${var:-DEFAULT}和${var=DEFAULT}的一点区别

${var:-DEFAULT}和${var=DEFAULT}的区别:

${var:-DEFAULT} If var not set or is empty, evaluate expression as $DEFAULT 
${var=DEFAULT} If var not set, evaluate expression as $DEFAULT 

如下例子,var先被赋值为空,然后用“=”赋值不会影响var的值,但用":-"操作符时可以改变var的值:

-----------------------------------------------------------------------

administrator@ubuntu:~/文档$ var=
administrator@ubuntu:~/文档$ echo ${var=z}

administrator@ubuntu:~/文档$ echo ${var:-z}
z

------------------------------------------------------------------------

还有一个例子就时对positional parameters的赋值,如对$1进行赋值就不能使用“=”,因为“=”只能用于一般的变量,也就是变量名以字母或下划线开头的变量,而":-"可以用来指定参数默认值:

administrator@ubuntu:~/文档$ echo ${1=xz} 
bash: $1: cannot assign in this way
administrator@ubuntu:~/文档$ echo ${1:-xz} 
xz

posted on 2011-12-17 14:17 feixingfei 阅读( ...) 评论( ...) 编辑 收藏

转载于:https://www.cnblogs.com/feixingfei/archive/2011/12/17/2297598.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
$script:THIS_PATH = $myinvocation.mycommand.path $script:BASE_DIR = Split-Path (Resolve-Path "$THIS_PATH/..") -Parent function global:deactivate([switch] $NonDestructive) { if (Test-Path variable:_OLD_VIRTUAL_PATH) { $env:PATH = $variable:_OLD_VIRTUAL_PATH Remove-Variable "_OLD_VIRTUAL_PATH" -Scope global } if (Test-Path function:_old_virtual_prompt) { $function:prompt = $function:_old_virtual_prompt Remove-Item function:\_old_virtual_prompt } if ($env:VIRTUAL_ENV) { Remove-Item env:VIRTUAL_ENV -ErrorAction SilentlyContinue } if (!$NonDestructive) { # Self destruct! Remove-Item function:deactivate Remove-Item function:pydoc } } function global:pydoc { python -m pydoc $args } # unset irrelevant variables deactivate -nondestructive $VIRTUAL_ENV = $BASE_DIR $env:VIRTUAL_ENV = $VIRTUAL_ENV New-Variable -Scope global -Name _OLD_VIRTUAL_PATH -Value $env:PATH $env:PATH = "$env:VIRTUAL_ENV/Scripts;" + $env:PATH if (!$env:VIRTUAL_ENV_DISABLE_PROMPT) { function global:_old_virtual_prompt { "" } $function:_old_virtual_prompt = $function:prompt if ("" -ne "") { function global:prompt { # Add the custom prefix to the existing prompt $previous_prompt_value = & $function:_old_virtual_prompt ("() " + $previous_prompt_value) } } else { function global:prompt { # Add a prefix to the current prompt, but don't discard it. $previous_prompt_value = & $function:_old_virtual_prompt $new_prompt_value = "($( Split-Path $env:VIRTUAL_ENV -Leaf )) " ($new_prompt_value + $previous_prompt_value) } } }
最新发布
03-22
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值