(1)變數替換:
根據變數的狀態(是否定義,賦值,為空)來進行替換
形式 說明
$ 變數本來的值
$ 如果var變數為空或者已經被unset之後,返回hello,但是不改變var的值
$ 如果var變數為空或者已經被unset之後,返回hello,並將var的值設定為hello
$ 如果var變數為空或者已經被unset之後,則將message訊息送到標準錯誤輸出介面,主要用來檢查變數var是否可以被正常賦值
$ 如果變數var被定義之後,返回hello,但是不改變var的值
eg1:vi a.sh
#!/bin/bash
var=1
unset var
echo
$echo
"1---變數值是$"
結果:[root@h data]# chmod +x ./a.sh
[root@h data]# ./a.sh
變數不會被賦值
1--變數值是
eg2:
var="hello"
unset
varecho $
echo
"2---變數值是$"
結果:[root@h data]# vi a1.sh
[root@h data]# /bin/sh a1.sh
變數被賦值
2---變數值是變數被賦值
eg3:
var=1
unset
varecho $
echo
"3---變數值是$"
結果:[root@h data]# vi a2.sh
[root@h data]# /bin/sh a2.sh
3---變數值是
eg4:
var="hello shell"
echo $
echo
"4---變數值是$"
echo $
echo
"5---變數值是$"
結果:[root@h data]# vi a3.sh
[root@h data]# /bin/sh a3.sh
這是預設值
4---變數值是hello shell
hello shell
5---變數值是hello shell
eg5:
var="hello shell"
echo $
echo
"4---變數值是$"
unset
varecho $
echo
"5---變數值是$"
結果:[root@h data]# /bin/sh a4.sh
這是預設值
4---變數值是hello shell
a3.sh: line 6: var: message
(2)命令替換:
☞shell指令碼可以先執行命令,將輸出結果暫時儲存,在合適的地方輸出
命令替換的格式:
`命令`
[root@h data]# date
tuejun 27 19:02
:52cst 2017
[root@h data]# date
-s "20170727 09:50
:40"
thujul 27 09:50
:40cst 2017
eg1:
#!/bin/bash
d=`date`
echo
"d 是$d"
統計該虛擬機器的使用者數:
[root@h data]# who | wc -l
4
eg2:(把命令執行結果儲存到變數中)wordcount
#!/bin/bash
user=`who | wc -l`
echo
"登入的使用者數是$user"
eg3:
ls=`ls | wc`
echo "結果1:$ls"
l=`ls | wc -l`
echo "結果2:$l"
結果:[root@h data]# vi b2.sh
[root@h data]# /bin/sh b2.sh
結果1: 3
15146
結果2:3
3行(當前資料夾下檔案數),15個單詞,146個位元組,wc -l只輸出檔案行數
ls |wc 是統計你這個目錄下的檔案數目。
ls |wc -l是輸出第乙個結果即3 即檔案的數目。
[root@h data]# ls -l | wc -l
9[root@h data]# ls
a1.sh a2.sh a3.sh a.log a.sh b1.sh b2.sh b.sh
[root@h data]# ll (total 32-----32代表32位元組)
total 32
-rw-r--r--. 1 root root 83 jul 25
19:34 a1.sh
-rw-r--r--. 1 root root 77 jul 25
19:36 a2.sh
-rw-r--r--. 1 root root 141 jul 25
19:44 a3.sh
-rwxrwxrwx. 1 root root 23 jul 27
10:11 a.log
-rwxr-xr-x. 1 root root 98 jul 25
19:29 a.sh
-rw-r--r--. 1 root root 65 jul 27
09:58 b1.sh
-rw-r--r--. 1 root root 72 jul 27
10:03 b2.sh
-rwxr-xr-x. 1 root root 37 jul 27
09:54 b.sh
(3)轉義字元的替換
表示式裡含有特殊字元,shell將會進行替換
轉義字元 意義
\\ 反斜槓
\a 警報,響鈴
\b (backspace)刪除
\n 換行
\r 回車
\t (tab)8個位元組,乙個水平製表符
\v 垂直製表符
-e和不加-e都是禁止對特殊字元進行轉義
-n禁止換行,不可以寫換行符
-e表對轉義字元進行替換。
不加-e:
[root@h data]# ./a.sh
好久不見,hello\n焦美琪
eg:
#!/bin/bash
var="hello"
echo
"好久不見,$"
echo
"焦美琪"
結果:[root@h data]# ./a.sh
好久不見,hello
焦美琪
shell變數的替換,命令的替換,轉義字元
1,shell變數的替換 變數可以根據變數是否為空或者被刪除,而被替換為特定的值 變數本來的值 var word 如果變數為空,或者已被刪除那麼返回word,但是不改變var的值 name xiaoming echo xiaoming s age is ech age xiaoming s age ...
shell中的命令替換和變數替換
可以用 command 也可以用 command 二者是有區別的,先看一下 command 注意 這裡不是引號,而反引號 下面這個是 command 變數替換可以根據變數的狀態 是否為空 是否定義等 來改變它的值,可以使用的變數替換形式 形式說明 變數本來的值 如果變數 var 為空或已被刪除 un...
shell指令碼變數替換
bin bash variable 1 me i love you,do you love me girl i don t love you,go away n 從變數開頭進行匹配,將符合匹配最短的字串刪除 echo befor delete variable 1 var1 echo after d...