shell指令碼變數的賦值 面試點(五)

2021-10-13 23:36:12 字數 4154 閱讀 9200

1.變數的賦值

面試點:變數賦值的五種方法

(1)顯示賦值(直接賦值)

簡單例項:

[root@bogon ~]

# ip=192.168.150.128

[root@bogon ~]

# echo $ip

192.168.150.128

[root@bogon ~]

# name=chenchen

[root@bogon ~]

# echo $name

chenchen

(2)使用read命令賦值

#! /bin/bash

read -p "請輸入乙個變數值:"

hostname

echo

$hostname

新增執行許可權,檢視執行結果

[root@bogon ~]

# chmod +x variable4.sh

[root@bogon ~]

# ./variable4.sh

請輸入乙個變數值:chen.com.cn

chen.com.cn

linux read命令用於從標準輸入讀取數值。

read 內部命令被用來從標準輸入讀取單行資料。這個命令可以用來讀取鍵盤輸入,當使用重定向的時候,可以讀取檔案中的一行資料。

語法

read

[-ers]

[-a aname]

[-d delim]

[-i text]

[-n nchars]

[-n nchars]

[-p prompt]

[-t timeout]

[-u fd]

[name ...]

引數說明:

-a 後跟乙個變數,該變數會被認為是個陣列,然後給其賦值,預設是以空格為分割符。

-d 後面跟乙個標誌符,其實只有其後的第乙個字元有用,作為結束的標誌。

-p 後面跟提示資訊,即在輸入前列印提示資訊。

-e 在輸入的時候可以使用命令補全功能。

-n 後跟乙個數字,定義輸入文字的長度,很實用。

-r 遮蔽\,如果沒有該選項,則\作為乙個轉義字元,有的話 \就是個正常的字元了。

-s 安靜模式,在輸入字元時不再螢幕上顯示,例如login時輸入密碼。

-t 後面跟秒數,定義輸入字元的等待時間。

-u 後面跟fd,從檔案描述符中讀入,該檔案描述符可以是exec新開啟的。

(3)使用命令列引數進行賦值(位置引數或環境變數)

1.使用位置引數

簡單例子:

#! /bin/bash

#使用位置引數給變數賦值

echo

"請輸入三個位置引數: $1

$2$3"

a=$1

b=$2

c=$3

echo

"輸出變數a,b,c的值為:$a,$b,$c"

新增執行許可權,檢視執行結果

[root@bogon ~]

# chmod +x variable5.sh

[root@bogon ~]

# ./variable5.sh 1 2 3

請輸入三個位置引數: 1 2 3

輸出變數a,b,c的值為:1,2,3

[root@bogon ~]

# ./variable5.sh 6 7 8

請輸入三個位置引數: 6 7 8

輸出變數a,b,c的值為:6,7,8

2.使用環境變數

[root@bogon ~]

# cat variable6.sh

#! /bin/bash

#使用環境變數,給變數賦值

#方法一:先直接賦值後,在使用關鍵字export將其轉化成環境變數

back_dir=/home/backup

export back_dir

echo

$back_dir

#方法二:直接使用export關鍵字

export back_dir1=/home/hao

echo

$back_dir1

新增執行許可權,檢視執行結果

[root@bogon ~]

# vim variable6.sh

[root@bogon ~]

# chmod +x variable6.sh

[root@bogon ~]

# ./variable6.sh

/home/backup

/home/hao

(4)使用命令的輸出結果進行賦值

簡單例子

#! /bin/bash

var=

'ls -l'

echo

$var

var1=

'cat /etc/passwd | grep root'

echo

$var1

新增執行許可權,檢視執行結果

[root@bogon ~]

# chmod +x variable7.sh

[root@bogon ~]

# ./variable7.sh

-rwxr-xr-x. 1 root root 1002 1月 4 19:11 variable2.sh -rwxr-xr-x. 1 root root 116 1月 4 20:04 variable3.sh -rwxr-xr-x. 1 root root 75 1月 5 11:54 variable4.sh -rwxr-xr-x. 1 root root 153 1月 5 12:08 variable5.sh -rwxr-xr-x. 1 root root 277 1月 5 12:18 variable6.sh -rwxr-xr-x. 1 root root 98 1月 5 12:30 variable7.sh -rwxr-xr-x. 1 root root 50 1月 4 19:05 variable.sh

root:x:0:0:root:/root:/bin/bash operator:x:11:0:operator:/root:/sbin/nologin

(5)從檔案中讀取

簡單例子:

#!/bin/bash

ls *.sh >execfile

while

read line do

chmod a+x $line

done(1)單引號

單引號括起來的字元都作為普通字元出現

(2)雙引號

雙引號括起來的字元,除「$」,「\」," 』 「,」 』 "這幾個字元保留原本含義,其他字元仍然作為普通字元。

(3)反引號

反引號括起來的字元,被shell解釋為命令,在執行時,shell首先執行該命令,並以它的標準輸出結果取代整個反引號部分。

簡單例子區分:

#! /bin/bash

echo

"請輸出系統管理員: $user"

echo

'請輸出系統管理員: $user'

echo

"請輸出當前路徑: `

pwd`

"echo

'請輸出當前路徑: `

pwd`

'新增執行許可權,檢視執行結果

[root@bogon ~]

# vim variable9.sh

[root@bogon ~]

# chmod +x variable9.sh

[root@bogon ~]

# ./variable9.sh

請輸出系統管理員: root

請輸出系統管理員: $user

請輸出當前路徑: /root

請輸出當前路徑: `

pwd`

shell 指令碼變數賦值

簡單的變數賦值a 879 echo the value of a is a.用let賦值let a 16 5 echo the value of a is now a.read命令是系統內建命令 語法格式 read 變數1 變數2 用 read 命令 這也是一種賦值 echo n enter a r...

shell指令碼 學習if語句和變數賦值

譬如某一天我們做了乙個很吊的軟體,為了方便使用者安裝和初始化,我們需要寫乙個shell指令碼,讓使用者執行下指令碼就完成了初始化。功能如下 定義乙個init.sh 1 檢視當前目錄下是否存在error.log檔案,如沒有則生成乙個 2 如果有了,則加入一行文字 init ai time 把當前時間加...

shell 變數定義 變數賦值

在 shell 中,當第一次使用某變數名時,實際上就定義了這個變數。建立和設定變數的語法 varname varvalue如果沒有給出變數值,則變數會被賦予乙個空字串。注意,在賦值操作符 的周圍不要有任何空格,像下面這三種寫法會報錯 varname varvalue varname varvalue...