Linux拓展之Shell默认变量值

Posted 二木成林

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Linux拓展之Shell默认变量值相关的知识,希望对你有一定的参考价值。

引入

如果我们直接输出一个未定义变量的值,则什么都不会显示,因为该变量一开始就未定义。如例:

# 变量 msg 未定义,使用 echo 语句进行输出变量值
echo $msg


所以我们可以为变量定义一个默认值,即使它未定义也会有一个默认值,在脚本使用过程中也不会报错。



语法

为变量设置默认值有两种语法,如下:

# 语法一
echo $变量名:-默认值
# 示例一
echo $var1:-"hello world"

# 语法二
echo $变量名:=默认值
# 示例二
echo $var2:="hello shell"

这两种语法的区别如下:

  • $变量名:-默认值 不会将默认值赋给变量名所表示的变量。
  • echo $变量名:=默认值 会将默认值赋给变量名所表示的变量。





var:-defaultvar:=default 的区别

关于两种语法的区别,如下:

var:-defaultvar:=default
当变量 var 不存在时返回默认值返回默认值
当变量 var 值为空字符串时返回默认值返回默认值
赋默认值后是否对变量 var 赋值
是否可对脚本中的位置参数 12 等进行设置可以不可以
当变量存在值时是否修改原值不修改不修改


示例

注:测试时注意用 unset 命令先删除掉变量,避免失误。

var:-default

当变量 var 不存在时,返回默认值。
当变量 var 值为空字符串时,返回默认值。
当赋予默认值后,var 变量没有值。
当变量 var 存在非空值时,不会修改原值。
可以对脚本中的位置参数 12 等进行设置默认值。

#!/bin/bash

function fun() 
    local error=$1:-"undefined error"
    echo "$0 : $LINE $error"


fun "File not found"
fun

注:当变量存在值时不会修改原值,并且 msgres 结果都会是原值。

var:=default

当变量 var 不存在时,返回默认值。
当变量 var 为空字符串时,返回默认值。
当赋予默认值后,var 变量也会被赋予默认值。
当变量 var 存在非空值时,不会修改原值。
不可以对脚本中的位置参数 12 等进行设置默认值。

#!/bin/bash

function fun() 
    local error=$1:="undefined error"
    echo "$0 : $LINE $error"


fun "File not found"
fun

以上是关于Linux拓展之Shell默认变量值的主要内容,如果未能解决你的问题,请参考以下文章

Linux拓展之使用 shell 进行数学运算

shell默认变量值

linux12shell编程 -->变量值操作

shell 怎么取远程服务器的变量值

Shell之环境变量、局部变量

Linux之Shell编程(13)