一、Shell註釋
1.1.單行註釋 #
開頭的行,就會被註釋
#--------------------------------------------
# 這是一個註釋
# author:wolves_liu
# site:www.wolves_liu.com
# slogan:學的不僅是技術,更是夢想!
#--------------------------------------------
##### 用戶配置區 開始 #####
#
#
# 這裏可以添加腳本描述信息
#
#
##### 用戶配置區 結束 #####
1.2. 多行註釋
:<<EOF # end-of-file
這裏面都是註釋的內容
EOF
或
:<<!
這裏面都是註釋的內容
!
二、Shell傳遞參數
2.1. $0
表示文件名,$1
表示執行腳本的第一個參數,…
echo "The file name is $0!"
echo "The 1th parameter is $1!"
echo "The 2th parameter is $2!"
echo "The 3th parameter is $3!"
執行:
. parameter.sh 1 2 3 //傳了三個參數 1 2 3
打印信息爲:
The file name is parameter.sh!
The 1th parameter is 1!
The 2th parameter is 2!
The 3th parameter is 3!
2.2.其他用法
參數個數爲:$#
echo "將所有參數以字符串顯示:$*
#打印 將所有參數以字符串顯示:1 2 3
echo "將所有參數以字符串顯示:\"$*\"
#打印 將所有參數以字符串顯示:“1 2 3”
2.3 $*
和$@
,不加引號時的用法一樣。加引號時,“$*”
是傳一個參數1 2 3; “$@”
是傳三個參數1 2 3
eg:
for i in "$*"; do
echo $i
done
打印:1 2 3
for i in "$@"; do
echo $i
done
打印:
1
2
3
三、shell基本運算符
3.1.基本運算符
val=`expr 2 + 2`
echo $val
# 1)運算符左右要有空格,eg:2+2 錯誤。要寫成2 + 2.
# 2)表達式用反引號` 而不是單引號' 注意區分。
3.2.+ - * /
a1=`expr $a + $b`
a2=`expr $a - $b`
a3=`expr $a \* $b`
a4=`expr $a / $b`
echo $a1 $a2 $a3 $a4
3.3. 條件語句的用法 == !=
if [ $a == $b ]
then
echo "a等於b"
fi
或者
if [ $a == $b ]; then
echo "a等於b"
fi
3.4.文件測試運算符
-f file
:是否爲普通文件,如果是,則返回 true。
-r file
:檢測文件是否可讀,如果是,則返回 true。
file="/net/peknetapp04/jsliu/shell/val.sh"
if [ -f $file ]
then
echo "val.sh is ragular file!"
else
echo "val.sh isn't ragular file!"
fi
四、echo用法
4.1. -e
顯示轉義字符
echo -e "i love you \n"
4.2. -n
不換行
echo -n "i love you"
4.3. >
打印到指定文件顯示
echo you love me > 1
4.4. 單引號,原樣輸出字符串,不進行轉義或取變量
echo '$a'
4.5.顯示命令執行結果
echo `date` # Mon Oct 28 17:06:08 CST 2019
五、printf用法
1.用法與c語言的標準函數printf()
一樣
printf "hello world %d!\n" 33333 # 打印: hello world 33333!
printf "%-10s %-8s %-4s\n" 姓名 性別 體重kg # 姓名 性別 體重kg
%-10s 指一個寬度爲10個字符(-表示左對齊,沒有則表示右對齊),任何字符都會被顯示在10個字符寬的字符內,如果不足則自動以空格填充,超過也會將內容全部顯示出來
%-4.2f 指格式化爲小數,其中.2指保留2位小數。
經過試驗,一個漢字佔三個字符。
2.printf 中單引號與雙引號一樣
printf 'xinxin %d %s!\n' 666 abc # xinxin 666 abc!
3.格式只指定了一個參數,但多出的參數仍然會按照該格式輸出,format-string 被重用
printf 'xinxin %s!\n' abc def
打印如下:
xinxin abc!
xinxin def!
五、test命令:用於檢查某個條件是否成立,它可以進行數值、字符和文件三個方面的測試。
5.1. []
裏面執行基本的算數運算
echo $[1+2] # 3
5.2.數值測試
num1=100
num2=100
if test $[num1] -eq $[num2]
then
echo "num1 等於 num2"
else
echo "num1 不等於 num2"
fi
5.3.字符串測試
=
,!=
, -z
字符串的長度爲零則爲真 -n
字符串的長度不爲零則爲真
str1=abc
str2=bcd
if test $str1 = $str2
then
echo "兩字符串相等"
else
echo "兩字符串不相等"
fi
5.4.文件測試
-e file
:文件是否存在
cd /net/peknetapp04/jsliu/shell
if test -e ./val.sh
then
echo '文件已存在!'
else
echo '文件不存在!'
fi