shell學習筆記(一)
shell學習
- shell學習筆記(一)
-
- 一、shell變量
- 二、變量的替換
- 三、位置參數
一、shell變量
定義:變量=值
注意:指派的等号前後不能有空格
使用:在變量的前面加上$,推薦給所有變量加上花括号{ }
author="嚴長生"
echo $author
echo ${author}
單引号和雙引号的差別:
- 以單引号’ '包圍變量的值時,單引号裡面是什麼就輸出什麼,即使内容中有變量和指令(指令需要反引起來)也會把它們原樣輸出。這種方式比較适合定義顯示純字元串的情況,即不希望解析變量、指令等的場景。
- 以雙引号" "包圍變量的值時,輸出時會先解析裡面的變量和指令,而不是把雙引号中的變量名和指令原樣輸出。這種方式比較适合字元串中附帶有變量和指令并且想将其解析後再輸出的變量定義。
二、變量的替換
- 使用``單引号Esc鍵下面那個:
variable=`commands`
- 使用$()
variable=$(commands)
commands 可以隻有一個指令,也可以有多個指令,多個指令之間以分号;分隔。
例子:
#!/bin/bash
begin_time=`date` #開始時間,使用``替換
sleep 20s #休眠20秒
finish_time=$(date) #結束時間,使用$()替換
echo "Begin time: $begin_time"
echo "Finish time: $finish_time"
三、位置參數
特殊變量$n 用來接收傳遞的參數,稱為位置參數
場景如下:
1、執行腳本時,傳遞的參數
2、調用函數時傳遞的參數,但是shell中函數定義不能有參數
例子:
#!/bin/bash
#編寫test.sh
echo "Language: $1"
echo "URL: $2"
[[email protected] demo]$./test.sh Shell http://c.biancheng.net/shell/
Language: Shell
URL: http://c.biancheng.net/shell/
shell就是執行傳遞的第一個參數,http://c.biancheng.net/shell/是傳遞的第二個參數。
#!/bin/bash
#定義函數
function func()
{
echo "Language: $1"
echo "URL: $2"
}
#調用函數
func C++ http://c.biancheng.net/cplus/
[[email protected] demo]$ . /test.sh
Language: C++
URL: http://c.biancheng.net/cplus/
c++就是調用函數的第一個參數, http://c.biancheng.net/cplus/是第二個參數
變量 | 含義 |
---|---|
$0 | 目前腳本的檔案名 |
$n(n≥1) | 傳遞給腳本或函數的參數。n 是一個數字,表示第幾個參數。例如,第一個參數是 $1,第二個參數是 $2 |
$# | 傳遞給腳本或函數的參數個數 |
$* | 傳遞給腳本或函數的所有參數 |
$@ | 傳遞給腳本或函數的所有參數 |
$? | 上個指令的退出狀态,或函數的傳回值 |
$$ | 目前 Shell 程序 ID |