shell腳本學習_變量-1

學習目標:

學習shell腳本變量用法:用戶自定義變量,環境變量,命令行參數(位置變量),預定義變量

 

總結:

執行shell腳本可用。./腳本名;source 腳本名;sh 腳本名。後兩種不必用加x權限。

shell腳本註釋爲#

變量賦值前後不能有空格

在windows下編輯shell腳本行尾有回車換行,運行腳本會報invalid \r

命令行傳入參數以空格區分

 

正文

1- shell腳本初識

shell腳本就是把shell命令寫成一個可執行文件。

示例:

a- 新建一個shell.sh文件,用vim打開並在裏面輸入ls,保存。

b- 賦予這個文件可執行權限x

c- 在shell環境下執行:./shell.sh,即開始運行這個腳本

注意:用vim編輯,因爲window下編輯,每行最後有換行符,執行會報錯:invalid ‘\r’

#shell.sh
ls

 

2- 用戶自定義變量

a- 用戶自定義變量和C語言裏的變量一樣,但是變量=前後不能有空格!

b- 變量沒有數據類型,全部被當作字符

c- 如果想打印變量,使用命令:echo $變量名

d- 變量間賦值,和C語言一樣,但是注意使用$符號:被賦值變量=$賦值變量

e- 清除變量賦值,命令:unset 變量名

示例:

/*a-c */
count=5
echo $count //打印5; 若echo count只會打印count

/*d- */
count=5
tmp=$count
echo "count=$count"  //打印count=5
echo "tmp=$tmp"    //打印tmp=5

/*e- */
unset count  //刪除變量賦值
echo "count=$count"  //此時打印count=

 

3- 命令行參數(位置變量)

命令行參數:

$0 文件名
$1到$9 命令行參數,就是執行腳本文件後面的參數,分別對應$1-$9
$# 命令行參數個數,就是執行腳本文件後面的參數個數
$@ 所有命令行參數個數,就是執行腳本文件後面的參數,和$*作用一樣
$* 所有命令行參數個數,就是執行腳本文件後面的參數,和$@作用一樣
$$ 進程PID

注意還有個$?用於打印上次執行結果,該參數結合第2篇博客理解。

上面的命令行參數理解結合示例:

先上效果如下。

需要說明的的是:

腳本文件後面跟的參數個數以空格爲區分的,多個空格當成一個空格。

命令行傳入參數大於9個,如果想打印,必須加{},echo ${10}

 

root@ubuntu:/home/shell# ./shell.sh hello world , welcom to beijing of chain .   my friends !
$0_name:./shell.sh
$#_num:12
$*_all:hello world , welcom to beijing of chain . my friends !
$@ all:hello world , welcom to beijing of chain . my friends !
$$ PID:17988
$? : 0
$1: hello
$2: world
$3: ,
$4: welcom
$5: to
$6: beijing
$7: of
$8: chain
$9: .
$10: my
$11: friends
$12: !

附腳本文件:

#shell.sh
echo "\$0_name:$0"
echo "\$#_num:$#"
echo "\$*_all:$*"
echo "\$@ all:$@"
echo "\$$ PID:$$"
echo "\$? : $?"
echo "\$1: $1"
echo "\$2: $2"
echo "\$3: $3"
echo "\$4: $4"
echo "\$5: $5"
echo "\$6: $6"
echo "\$7: $7"
echo "\$8: $8"
echo "\$9: $9"
echo "\$10: ${10}"
echo "\$11: ${11}"
echo "\$12: ${12}"

 

4- 環境變量

PATH、PWD、HOME等,命令行執行export可看到當前環境變量

echo $PWD

該部分內容暫不做過多理解。

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