成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

bash 腳本中關(guān)于變量的一些用法總結(jié)

系統(tǒng) Linux
除了這種用法之外,針對變量還可以有其他的一些操作,比如在未設(shè)置變量時(shí)設(shè)置一個(gè)默認(rèn)值,以及為單個(gè)變量分配多個(gè)值等。

我們先前寫過關(guān)于 ??bash 腳本中變量的用法???。其一般使用方式為,使用一個(gè)變量存儲(chǔ)一些數(shù)據(jù),然后調(diào)用變量,如下所示:?

name="tiap"
echo "hello, $name!"

除了上面這種用法之外,針對變量還可以有其他的一些操作,比如在未設(shè)置變量時(shí)設(shè)置一個(gè)默認(rèn)值,以及為單個(gè)變量分配多個(gè)值等。

下面我們來詳細(xì)看一下。

使用數(shù)組

數(shù)組在 bash 腳本中是經(jīng)常會(huì)用到的一種數(shù)據(jù)類型。其定義方法為:

name=("tiap" "linux")

上述腳本,是在數(shù)組 name 中定義了兩個(gè)變量,分別是 tiap linux。

那么,如何訪問這些值呢?

如果你運(yùn)行 echo $name,會(huì)看到它只打印第一個(gè)值,tiap。訪問其他的值需要使用另外的方式,即使用 ${variable[number]} 語法從數(shù)組變量中提取特定的值。如下所示:

echo "hello ${name[1]}!"

上面腳本將打印 "hello, linux!"

與其他大多數(shù)編程語言類似,數(shù)組索引的順序,是從 0 開始的。所以,訪問第一個(gè)元素的方式為:

echo "hello ${name[0]}!"

它與 echo "hello, $name!" 的結(jié)果是完全相同的,由此可見,訪問數(shù)組的時(shí)候,其索引值 [number] 是可以省略的,當(dāng)省略索引值的時(shí)候,取默認(rèn)值 0。

索引僅表示項(xiàng)在數(shù)組中的位置,所以索引0是數(shù)組中的第一個(gè)元素。

未設(shè)置變量時(shí)使用默認(rèn)值

當(dāng)變量未按以下方式設(shè)置時(shí),可以將變量默認(rèn)設(shè)置為某個(gè)字符串:

${variable:-string}

看下面的例子:

echo "hello ${name:-nobody}!"

由于變量 name 沒有設(shè)置任何值,所以它會(huì)使用 nobody 作為默認(rèn)值,所以上述腳本將會(huì)打印 "hello, nobody!"。

如果預(yù)先設(shè)置了變量值,當(dāng)然會(huì)使用為其設(shè)置的值:?

name="tiap"
echo "hello ${name:-nobody}!"

其結(jié)果為 "hello, tiap!"

在已設(shè)置變量值時(shí)修改值

我們還可以設(shè)置變量以在設(shè)置變量時(shí)返回某個(gè)值。這將導(dǎo)致變量在設(shè)置時(shí)打印某個(gè)字符串,而在未設(shè)置時(shí)不打印任何字符串。其語法結(jié)構(gòu)如下:

${variable:+string}

看下面的例子:

echo "hello ${name:+person}!"

由于變量 name 沒有設(shè)置,所以它只會(huì)打印 "hello !"。

修改上面的腳本,為變量 name 設(shè)置一個(gè)值,它將不會(huì)使用為其設(shè)置的值,而是使用調(diào)用的時(shí)候提供的值:?

name="tiap"
echo "hello ${name:+person}!"

上述腳本的結(jié)果為 "hello person!"。

變量的間接引用

看下面的語法結(jié)構(gòu):

${!variable}

這個(gè)在功能上優(yōu)點(diǎn)復(fù)雜,但是當(dāng)你了解它的工作原理后,就很容易理解了,看下面的例子:?

name="tiap"
variable="name"
echo "hello ${!variable}!"

上述腳本將會(huì)打印 "hello tiap!"。

變量名前面的感嘆號(hào) ! 會(huì)替換變量名,然后在查找該變量名的相關(guān)變量值。

計(jì)算變量的長度

現(xiàn)在我們再來看如下語法結(jié)構(gòu):

${#variable}

它將會(huì)打印變量的長度,但是會(huì)根據(jù)變量是字符串還是數(shù)組而略有不同。

如果變量為字符串,那么將會(huì)返回字符串中字符的個(gè)數(shù),如下所示:?

variable="name"
echo "${#variable}."

上述腳本的結(jié)果為 4。

如果變量為數(shù)組,那么將會(huì)打印數(shù)組中元素的個(gè)數(shù),看下面的例子,其結(jié)果將會(huì)打印 2:?

variable=("name" "word")
echo "${#variable}."

小寫和大寫字符串

要改變變量值的大小寫,可以分別使用運(yùn)算符 ^ ,,如下所示:?

# 轉(zhuǎn)為大寫
${variable^}
${variable^^}
# 轉(zhuǎn)為小寫
${variable,}
${variable,,}

上述腳本中,一個(gè)運(yùn)算符 ^ 和兩個(gè)^^ 有什么區(qū)別呢?一個(gè)運(yùn)算符(比如 ${variable^} )只會(huì)修改變量值中的第一個(gè)字母,而兩個(gè)運(yùn)算符的時(shí)候(比如 ${variable^^})會(huì)修改整個(gè)字符串。比如:?

variable="name"
echo "${variable^}"

結(jié)果將為:Name。

而:

variable="name"
echo "${variable^^}"

其結(jié)果將會(huì)為:NAME。

同樣,小寫轉(zhuǎn)換符也是一樣。下面腳本將會(huì)打?。?span style="background-color: #d6fad6;">wIDEname

variable="WIDEname"
echo "${variable,}"

而下面腳本將會(huì)打?。?span style="background-color: #d6fad6;">widename

variable="WIDEname"
echo "${variable,,}"
責(zé)任編輯:龐桂玉 來源: TIAP
相關(guān)推薦

2020-04-10 08:50:37

Shell腳本循環(huán)

2020-05-19 14:35:42

Shell腳本循環(huán)

2017-09-05 09:17:47

Java編程用法總結(jié)

2020-04-08 10:21:58

bash腳本語言

2020-04-14 09:22:47

bash腳本技巧

2020-09-28 06:45:42

故障復(fù)盤修復(fù)

2012-01-18 10:13:50

Objective-CiOSself

2009-09-21 17:46:25

Hibernate數(shù)據(jù)

2011-07-13 09:13:56

Android設(shè)計(jì)

2009-07-02 10:52:30

JavaBean規(guī)范

2019-10-15 06:00:26

Google AnalAngularReact

2013-04-07 10:40:55

前端框架前端

2009-06-18 09:51:25

Java繼承

2022-11-09 19:02:10

Linux

2017-09-10 17:31:18

iOS渲染數(shù)據(jù)

2009-09-27 11:09:42

API設(shè)計(jì)

2015-12-08 09:05:41

Java內(nèi)部類

2017-02-20 16:28:30

DCISDN-WAN傳輸網(wǎng)絡(luò)

2009-06-22 15:36:00

如何學(xué)好java

2011-07-12 09:47:53

WebService
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)

主站蜘蛛池模板: 每日更新av | 国产一区二区精品在线 | 日韩乱码在线 | 婷婷综合五月天 | 一区二区三区视频在线观看 | 91色网站 | 国产在线精品一区 | 日韩二区 | 国产视频一区二区 | 日韩欧美视频 | 欧美日韩精品一区二区天天拍 | 一区二区亚洲 | 欧美精品一区二区在线观看 | 亚洲成人三区 | 不卡一区二区在线观看 | 在线观看亚洲精品 | 久久精品成人一区 | 久久成人人人人精品欧 | 羞羞网站在线观看 | 日本精品一区二区三区在线观看视频 | 国产不卡一区 | 中文字幕在线一区 | 国产精品资源在线 | 天天色天天色 | 毛片入口 | 欧美精品一区二区在线观看 | 国产一区二区在线视频 | 欧美日韩国产一区二区三区 | hitomi一区二区三区精品 | 欧美国产精品一区二区三区 | 日韩一区二区在线视频 | 黄色片在线观看网址 | 亚洲精品久久久久久久不卡四虎 | 中文字幕一区二区三区四区五区 | 91精品久久久久久久久 | 久久久久国产精品午夜一区 | 国产精品一区二区av | 91久久爽久久爽爽久久片 | 欧美二区乱c黑人 | 欧美一区不卡 | 毛片久久久 |