shell是linux下的乙個命令解析器,把一系列的命令序列寫入文字檔案就構成了shell指令碼(類似於windows中的批處理)
#!/bin/sh
#echo something
echo "hello world"
echo "hello !!"
mkdir /tnt
符號#!用來指定該指令碼檔案的解析程式。在上面例子中使用/bin/sh來解析該指令碼。
以#開頭的句子表示注釋,直到這一行的結束。
變數的引用,檔案s2
#!/bin/sh
#set varible a
a="hello world"
#print a
echo "a is:"
echo $a
#!/bin/sh
#set varible num
num=2
echo "this is the $nd"
預設變數
$# :傳入指令碼的命令列引數個數
$* :所有命令列引數值,在各個引數值之間
留有空格
$0 :命令本身(shell檔名)
$1 :第乙個命令列引數
$2 :第二個命令列引數
#!/bin/sh
echo "number of vars:"$#
echo "values of vars:"$*
echo "value of var1:"$1
echo "value of var2:"$2
echo "value of var3:"$3
echo "value of var4:"$4
執行 ./s2 1 2 3 4
[root@localhost smb]# ./s3 1 2 3 4
number of vars:4
values of vars:1 2 3 4
value of var1:1
value of var2:2
value of var3:3
value of var4:4
在變數首次被賦值時加上 local 關鍵字可以宣告乙個區域性變數 檔案s3
#!/bin/bash
hello="var1"
echo $hello
function func1
func1
echo $hello 結果
[root@localhost smb]# ./s4
var1
var2
var1
if語句
if [ expression ]
then
#code block
fi if [ expression ]
then
#code block
else
#code block
fiif [ expression ]
then
#code block
else if [ expression ]
then
#code block
else
#code block
fi fi
if [ expression ]; then
#code block
elif [ expression ]
then
#code block
else
#code block
fi fi
比較比較操作 整數操作 字串操作
相同 -eq =
不同 -ne ! =
大於 -gt >
小於 -lt <
大於或等於 -ge
小於或等於 -le
為空 -z
-e 檔案已經存在
-f 檔案是普通檔案
-s 檔案大小不為零
-d 檔案是乙個目錄
-r 檔案對當前使用者可以讀取
-w 檔案對當前使用者可以寫入
-x 檔案對當前使用者可以執行
檔案s5
#!/bin/sh
folder=/home
[ -r "$folder" ] && echo "can read $folder"
[ -f "$folder" ] || echo "this is not file"
for迴圈
for var in [list]
do #code block
done
檔案s6
#!/bin/bash
for day in sun mon tue wed thu fri sat
do echo $day
done
結果[root@localhost smb]# ./s6
sunmon
tuewed
thufri
satwhile迴圈和until迴圈
while [ condition ]
do #code block
done
until [ condition ]
do #code block
done
while 和 until的區別在於while是為真時執行,until是為假時執行
case語句
case "$var" in
condition1 )
;; condition2 )
;; * )
default statments;;
esac
例子s7
#!/bin/bash
echo "hit a key, then hit return."
read keypress
case "$keypress" in
[a-z] ) echo " uppercase letter";;
[a-z] ) echo " lowercase letter";;
[0-9] ) echo "digit";;
* ) echo "punctuation, whitespace, or other";;
esac
結果[root@localhost smb]# ./s7
hit a key, then hit return.
a lowercase letter
[root@localhost smb]# ./s7
hit a key, then hit return.
b uppercase letter
注意:q1: 當編輯好指令碼後,如果要執行該指令碼,還必須使其具有可執行屬性。chmod +x filename
q2: 變數賦值時,「=」左右兩邊都不能有空格;比較語句時「=」左右兩邊都要有空格
q3: 在shell程式設計中,所有的變數都由字串組成,並且不需要預先對變數進行宣告
shell 指令碼基礎語法
這句一般在 shell 指令碼的第一行。告訴作業系統,此指令碼的直譯器為 bin sh 這個可執行檔案。類似地,如果你的指令碼用 bash,ksh,解釋,第一行就應該是 bin bash bin ksh 注意 shell 指令碼對空格要求十分嚴格,關鍵字和符號之間必須加空格。1 字串判斷 str1 ...
shell指令碼基礎 語法
一 變數 root t foot home2 zzz01 a hello root t foot home2 zzz01 echo a hello root t foot home2 zzz01 echo world hello world 其實 a和 作用相同,但是為了防止字串在拼接時,計算機無法...
shell指令碼基礎語法(if 和 陣列)
條件判斷命令 test 或者 例 test 1 lt 4 判斷1 4 test語句的等價形式 1 lt 4 檔案測試符號 f 存在且是普通檔案 d 存在且是目錄 s 存在且位元組數大於0 r 存在且可讀 w 存在且可寫 x 存在且可執行 如 test d mydoc 判斷mydoc是否是目錄例子 1...