定義變量:
變量名命名規則與其他語言相似,但注意!變量名與=之間不能有空格
variableName="name"
myURL="http://www.example.com"
myNum="100"
使用變量:
your_name="mozhiyan"
echo $your_name
echo ${your_name} #加花括弧用來識別變量的邊界
變量可被二次定義,替換第一次的內容
但是如果將該變量定義成只讀的話,就不能被二次修改了。
readonly your_name
刪除變量:
#!/bin/bash
read your_name
unset your_name
echo "i am ${your_name} !"
運行以上腳本將不會輸出name。
變量的類型:局部變量–僅在當前shell實例中有效
環境變量–shell可訪問可定義
shell變量–有shell程序設置的特殊變量,shell變量中一部分是環境變量一部分是局部變量
特殊變量:
#!/bin/bash
echo "File Name: $0"#$0表示當前腳本的文件名
echo "First Parameter : $1"#$n 傳遞給腳本或函數的參數
echo "First Parameter : $2"
echo "Quoted Values: $@"#傳遞給腳本或函數的所有參數
echo "Quoted Values: $*"#傳遞給腳本或函數的所有參數
echo "Total Number of Parameters : $#"#傳遞給腳本或函數的參數個數
$$
當前Shell進程ID。對於 Shell 腳本,就是這些腳本所在的進程ID即PID的值。
$?
可以獲取上一個命令的退出狀態。
所謂退出狀態,就是上一個命令執行後的返回結果。
一般情況下,成功返回0,失敗返回1.
也可用於獲得函數返回值。
#!/bin/bash
funWithReturn(){
name="yaorong"
return $name
}
funWithReturn
# Capture value returnd by last command
ret=$?#獲取上面函數的返回值
echo "The sum of two numbers is $ret !"
$* 和 $@ 的區別
#!/bin/bash
echo "\$*=" $*
echo "\"\$*\"=" "$*"
echo "\$@=" $@
echo "\"\$@\"=" "$@"
上面腳本輸出結果是一樣的。
但逐個輸出的話帶引號的結果不一樣。
#!/bin/bash
echo "print each param from \$*"
for var in $*
do
echo "$var"
done
echo "print each param from \$@"
for var in $@
do
echo "$var"
done
echo "print each param from \"\$*\""
for var in "$*"
do
echo "$var"
done
echo "print each param from \"\$@\""
for var in "$@"
do
echo "$var"
done