- 索引
- 1. 第一行必須是"#!/bin/sh"
- 2. 注釋:一行開頭為 #
- 3. 定義變量
- 4. 邏輯符號
- 5. 接收參數
- 6. 控制流:if/then/elif/else/fi
- 7. 循環:for/do/done
- 8. 格式化輸出日期
- 9. exist
- 10. 系統變量
- 參考文檔
索引
1. 第一行必須是"#!/bin/sh"
- 它不是注釋,"#!/bin/sh"是對shell的聲明,說明你所用的是那種類型的shell及其路徑所在;
- 如果沒有聲明,則腳本將在默認的shell中執行,默認shell是由用戶所在的系統定義為執行shell腳本的shell.
- 如果腳本被編寫為在Kornshell ksh中運行,而默認運行shell腳本的為C shell csh,則腳本在執行過程中很可能失敗。
- 所以建議大家就把"#!/bin/sh"當成C 語言的main函數一樣,寫shell必須有,以使shell程序更嚴密。
2. 注釋:一行開頭為 #
3. 定義變量
定義單變量
p_name='kang'
使用單變量
echo $p_name'.js' # 輸出kang.js echo $p_name.js # 輸出kang.js cp $p_name.js copy.js;
4. 邏輯符號
命令1 && 命令2
如果左邊的“命令1”執行成功,那么右邊的“命令2”才會被執行。
命令1 || 命令2
與&&相反。如果“命令1”未執行成功,那么就執行“命令2”。
() {}
...
5. 接收參數
腳本文件“copy.sh”,其內容如下:
m=$1 n=$2 echo $m-$n
執行命令:“sh copy.sh 111 222”;輸出 111-222
6. 控制流:if/then/elif/else/fi
注意"["和"]"前后的空格必須有,否則提示錯誤
m="kang2" if [ "$m" == 'kang' ]; then echo 'kang' elif [ $m == 'kang2' ]; then echo 'kang2' else echo 'no' fi
示例:判斷文件夾
if [ -d './js' ]; then echo 'js是文件夾' fi
7. 循環:for/do/done
注意:循環項是以“空格”拆分的字符串
name="rain man's blog" for loop in $name; do echo $loop; done
8. 格式化輸出日期
curdate="`date +%Y%m%d%H%M%S`" echo $curdate
執行結果:20110904175817
9. exist
退出當前shell腳本,一般來說,返回0表示執行成功,其他值表示沒有執行成功。
exist 0 # 返回0 exist 1 # 返回1
10. 系統變量
pwd=$PWD # 當前目錄 user=$USER # 當前用戶 echo $pwd echo $user
運行腳本后輸出:
/home/rainman/test rainman