小男孩‘自慰网亚洲一区二区,亚洲一级在线播放毛片,亚洲中文字幕av每天更新,黄aⅴ永久免费无码,91成人午夜在线精品,色网站免费在线观看,亚洲欧洲wwwww在线观看

分享

Bash入門系列 #2: 了解bash中的變量

 江海博覽 2024-10-26
山嵐
山嵐
2024-10-24 19:13

如果你做過其他語(yǔ)言的編程,那么你肯定使用過變量。

要是你之前沒有接觸過變量,可以將變量理解為存儲(chǔ)一些可以隨著時(shí)間變化的信息或數(shù)據(jù)的容器。

其實(shí),不論是使用哪種語(yǔ)言進(jìn)行編程,我們都會(huì)使用到變量,就是在上一節(jié)的入門教程中,我們也有使用到定義在系統(tǒng)中的變量。比如HOMEUSER、SHELL就是預(yù)先定語(yǔ)在系統(tǒng)中的變量。這一節(jié)的教程將學(xué)習(xí)怎么在bash腳本中使用變量.

在bash腳本中使用變量

在上一節(jié)的學(xué)習(xí)中,我們學(xué)會(huì)寫一個(gè)hellworld的bash腳本。

#! /bin/bash echo -n 'Hello, World!'

這個(gè)腳本還比較簡(jiǎn)陋,我們來優(yōu)化豐富一下。

我們使用shell變量來改進(jìn)這個(gè)腳本,讓它可以用用戶輸入的名字來歡迎該用戶。

編輯hello.sh腳本并使用read命令獲取用戶的輸入:

#! /bin/bash

echo 'What's your name, stranger?'

read name

echo 'Hello, $name'

現(xiàn)在運(yùn)行你的hello.sh腳本;它會(huì)提示你輸入你的名字,然后用你提供的名字來向你問候:

sean@debian-12:~/scripts$ ./hello.sh What's your name, stranger? Elliot Hello, Elliot

在這個(gè)例子中,我輸入了Jerry作為我的名字,腳本回復(fù)了“Hello,Jerry”,現(xiàn)在腳本比原來只會(huì)“Hello,World”有趣多了。

Bash入門系列 #2: 了解bash中的變量

逐行解釋上面的腳本

現(xiàn)在,我們回過頭來解釋每行代碼都是做什么的。

首先,指定shell的解釋器的路徑,告訴系統(tǒng),我們要用bash來運(yùn)行腳本。

#!/bin/bash

接下來,告訴執(zhí)行這個(gè)腳本的用戶,需要輸入他/她的名字

echo 'What's your name, stranger?'

這個(gè)行是用echo在命令行中打印出一行文字,很好理解。

接下來是這個(gè)腳本最神奇的地方

read name

這里使用了read命令來獲取用戶的輸入,所以用戶可以在這里輸入一個(gè)名字或者其他的字符串,在按下enter鍵之后,輸入的內(nèi)容會(huì)被賦值給name變量。

提示輸入名字和獲取輸入的read命令,是可以寫成一行來完成的,這屬于進(jìn)階的內(nèi)容:

read -p 'What's your name, stranger?' name

使用-p參數(shù)就然后跟蹤提示文字就可以實(shí)現(xiàn),這里就只是提一下,不做細(xì)述。

最后,腳本用用戶輸入的名字和用戶打招呼:

echo “Hello, $name

需要注意的是,這里的變量名前面結(jié)論一個(gè)美元的符號(hào),用于聲明這里是要調(diào)取變量名中的值,如果去掉美元的符號(hào),在輸出顯示時(shí)就變成了'Hello,name'

這個(gè) 美元的$ 符號(hào)在bash腳本中稱為解引用操作符。

整數(shù)、字符串、字符?怎樣在bash腳本中使用不同的數(shù)據(jù)類型?

讓我們把變量的使用場(chǎng)景弄得混亂一些。

你可以使用等號(hào)來給變量賦值,例如下面一行將創(chuàng)建一個(gè)名為age的變量,并設(shè)置它的值為27.

age=27

在age的變量創(chuàng)建完成后,你可以隨心所欲的修改它的值,例如下面這樣:

age=3

上面的命令,將變量age的值從第一次賦值的27變更為3.

變量可以保存不同的數(shù)據(jù)類型,比如字符串、字符和整數(shù),bash本身內(nèi)置的數(shù)據(jù)類型是沒有浮點(diǎn)數(shù)這類有小數(shù)點(diǎn)的數(shù)據(jù)類型。

letter='c'
color='blue'
year=2020

bash中的常量

你也可以創(chuàng)建一個(gè)常量,常量的意思就是,這個(gè)變量的值一旦被賦予之后,就不能被改變!也稱為只讀變量。要定義一個(gè)常量的方式就是在變量名前面添加一個(gè)readonly來實(shí)現(xiàn)。

readonly PI=3.1415926

上面的命令創(chuàng)建了一個(gè)名為PI的常量,并且將它的值設(shè)置為3.1415926。如果你嘗試改變這個(gè)常量的值,會(huì)得到一個(gè)報(bào)錯(cuò)。

bash: PI: readonly variable

就像下面截圖看到的一樣,你只能度一個(gè)常量的值,這個(gè)常量沒創(chuàng)建后就不能修改它的值了。

Bash入門系列 #2: 了解bash中的變量

如果要把這個(gè)常量刪除,可以使用unset命令,比如刪掉上面定義的PI常量:

unset $PI

命令替換

將命令的輸出結(jié)果復(fù)制給變量的能力被稱為命令替換,這是bash上面的一個(gè)神奇特性。下面演示將data命令的輸出結(jié)果復(fù)制給TODAY:

TODAY=$(date)

注意:在上面的復(fù)制例子中,需要在date命令的前面添加一個(gè)美元的$符號(hào),然后date用括號(hào)括起來。

Bash入門系列 #2: 了解bash中的變量

當(dāng)然,你也可以使用兩個(gè)反單引號(hào)把date給括起來:

TODAY=`date`

使用反引號(hào)來執(zhí)行命令替換是以前舊的方法,現(xiàn)在很多文章和教程是建議使用下面的這種格式

variable=$(command)

讓你的HelloWorld腳本看起來聰明點(diǎn)

既然學(xué)習(xí)了如何執(zhí)行命令替換,那么我們可以來再次改進(jìn)一下HelloWorld的腳本,這個(gè)腳本上一次的版本是要求用戶輸入他/她的名字?,F(xiàn)在不用了,你的腳本通過whoami命令和命令替換的方式來問候運(yùn)行腳本的人。

#! /bin/bash echo 'Hello, $(whoami)'

看到了嗎?現(xiàn)在代碼就僅僅只有兩行!

現(xiàn)在運(yùn)行這個(gè)腳本:

./hello.sh

它看起來好像比之前的版本聰明一點(diǎn)!

Bash入門系列 #2: 了解bash中的變量

好了,這節(jié)的教程就到此為止。感謝您的閱讀。

練習(xí)題

自己動(dòng)手做練習(xí)可以幫助你記憶剛學(xué)到的東西,下面是幾到簡(jiǎn)單的練習(xí)題,用到了上面提到的內(nèi)容。如果您是初學(xué)者,建議您可以自己動(dòng)手做一下。

練習(xí) 1: 您的全名叫什么?

寫一個(gè)shell腳本,詢問用戶的全名并將輸入的名字打印出來。

難度級(jí)別:容易

提示:可以使用read命令獲取用戶輸入。

練習(xí) 2: 您今年多大啦?

寫一個(gè)shell腳本,詢問用戶的年齡并打印出來。

難度級(jí)別:容易

提示:用echoread命令賦值變量的值為一個(gè)整數(shù)并打印出來。

練習(xí) 3: 你喜歡蘋果派?

編寫一個(gè)命令打印圓周率的值。證明它是不可改變的。

難度級(jí)別:容易

提示:可以使用readonly命令去賦值PI的值為3.14159。

練習(xí) 4: 今天的日期?

寫一個(gè)shell腳本,將當(dāng)前日期存儲(chǔ)在一個(gè)變量中并打印出來。

難度級(jí)別:容易

提示:可以使用date命令進(jìn)行命令轉(zhuǎn)化并將變量的值打印出來。

練習(xí) 5: 姓名、年齡和當(dāng)前時(shí)間

寫一個(gè)腳本,打印上面練習(xí)1、練習(xí)2和練習(xí)4的所有輸出,每個(gè)答案單獨(dú)一行顯示。

難度級(jí)別:容易

輸出的格式可以參考下面的格式:

What is your name?

XYZ ABC

Hello XYZ ABC

What is your age?

44

So you are 44.

Today's date is Thursday 20 January 2022 12:55:23 PM IST

替換上面模板中的XYZ為您的答案。當(dāng)然您也可以把這個(gè)寫成中文的,shell是支持中文輸出的。

練習(xí)題答案

答案 1: 您的全名叫什么?

寫一個(gè)shell腳本,詢問用戶的全名并將輸入的名字打印出來。

#! /bin/bash echo 'What's your full name?' read name echo 'Hello, $name'

答案 2:您今年多大啦?

寫一個(gè)shell腳本,詢問用戶的年齡并打印出來。

#!/bin/bash
echo 'What is your age?'
read age
echo 'So you are $age years old'

答案 3: 你喜歡蘋果派?

編寫一個(gè)命令打印圓周率的值。證明它是不可改變的。

$ readonly PI=3.14159 $ echo 'Pi value is $PI' Pi value is 3.14159 $ PI=3.5 bash: PI: readonly variable

答案 4: 今天的日期?

寫一個(gè)shell腳本,將當(dāng)前日期存儲(chǔ)在一個(gè)變量中并打印出來。

#!/bin/bash
today=$(date)
echo 'Today's date is $today'

答案 5: 姓名、年齡和當(dāng)前時(shí)間

寫一個(gè)腳本,打印上面練習(xí)1、練習(xí)2和練習(xí)4的所有輸出,每個(gè)答案單獨(dú)一行顯示。

#!/bin/bash echo 'What is your name?' read name echo 'Hello $name' echo 'What is your age?' read age echo 'So you are $age.' today=$(date) echo 'Today's date is $today'


如果您對(duì)我的文章有興趣,我把我發(fā)布的文章都?xì)w檔到我私人網(wǎng)站中去,歡迎訪問Corner 三的小角落 -- 首頁(yè)查閱之前的文章。

Bash入門系列 #2: 了解bash中的變量

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購(gòu)買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶 評(píng)論公約

    類似文章 更多