[ shell ] — 註釋、運算符、echo、printf、test——2

一、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
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章