我们先前写过关于 bash 脚本中变量的中关总结用法。其一般使用方式为,于变用法使用一个变量存储一些数据,脚本然后调用变量,中关总结如下所示:
name="tiap"
echo "hello, $name!"
除了上面这种用法之外,针对变量还可以有其他的脚本一些操作,比如在未设置变量时设置一个默认值,中关总结以及为单个变量分配多个值等。于变用法
下面我们来详细看一下。脚本
数组在 bash 脚本中是中关总结经常会用到的一种数据类型。其定义方法为:
name=("tiap" "linux")
上述脚本,是在数组 name 中定义了两个变量,分别是 tiap 和 linux。
那么,如何访问这些值呢?
如果你运行 echo $name,会看到它只打印第一个值,tiap。访问其他的值需要使用另外的方式,即使用 ${ variable[number]} 语法从数组变量中提取特定的值。如下所示:
echo "hello ${ name[1]}!"
上面脚本将打印 "hello, linux!"
与其他大多数编程语言类似,数组索引的顺序,是从 0 开始的。所以,访问第一个元素的方式为:
echo "hello ${ name[0]}!"
它与 echo "hello, $name!" 的结果是完全相同的,由此可见,访问数组的时候,其索引值 [number] 是可以省略的,当省略索引值的时候,取默认值 0。
索引仅表示项在数组中的位置,所以索引0是数组中的第一个元素。
当变量未按以下方式设置时,可以将变量默认设置为某个字符串:
${ variable:-string}
看下面的例子:
echo "hello ${ name:-nobody}!"
由于变量 name 没有设置任何值,所以它会使用 nobody 作为默认值,所以上述脚本将会打印 "hello, nobody!"。
如果预先设置了变量值,当然会使用为其设置的值:
name="tiap"
echo "hello ${ name:-nobody}!"
其结果为 "hello, tiap!"
我们还可以设置变量以在设置变量时返回某个值。这将导致变量在设置时打印某个字符串,而在未设置时不打印任何字符串。其语法结构如下:
${ variable:+string}
看下面的例子:
echo "hello ${ name:+person}!"
由于变量 name 没有设置,所以它只会打印 "hello !"。
修改上面的脚本,为变量 name 设置一个值,它将不会使用为其设置的值,而是使用调用的时候提供的值:
name="tiap"
echo "hello ${ name:+person}!"
上述脚本的结果为 "hello person!"。
看下面的语法结构:
${ !variable}
这个在功能上优点复杂,但是当你了解它的工作原理后,就很容易理解了,看下面的例子:
name="tiap"
variable="name"
echo "hello ${ !variable}!"
上述脚本将会打印 "hello tiap!"。
变量名前面的感叹号 ! 会替换变量名,然后在查找该变量名的相关变量值。
现在我们再来看如下语法结构:
${ #variable}
它将会打印变量的长度,但是会根据变量是字符串还是数组而略有不同。
如果变量为字符串,那么将会返回字符串中字符的个数,如下所示:
variable="name"
echo "${ #variable}."
上述脚本的结果为 4。
如果变量为数组,那么将会打印数组中元素的个数,看下面的例子,其结果将会打印 2:
variable=("name" "word")
echo "${ #variable}."
要改变变量值的大小写,可以分别使用运算符 ^ 和,,如下所示:
# 转为大写
${ variable^}
${ variable^^}
# 转为小写
${ variable,}
${ variable,,}
上述脚本中,一个运算符 ^ 和两个^^ 有什么区别呢?一个运算符(比如 ${ variable^} )只会修改变量值中的第一个字母,而两个运算符的时候(比如 ${ variable^^})会修改整个字符串。比如:
variable="name"
echo "${ variable^}"
结果将为:Name。
而:
variable="name"
echo "${ variable^^}"
其结果将会为:NAME。
同样,小写转换符也是一样。下面脚本将会打印:wIDEname
variable="WIDEname"
echo "${ variable,}"
而下面脚本将会打印:widename
variable="WIDEname"责任编辑:庞桂玉 来源: TIAP bash脚本变量
echo "${ variable,,}"
(责任编辑:时尚)
云知声发布“Pandora”语音中控方案,产品智能化只需6个月
兴胜创建(00896.HK)因行使购股权配发1090.9万股 每股发行价1.16港元
人类历史上的首个可重复使用太空舱,也被 SpaceX 实现了