Shell腳本語法


 

 

索引

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

參考文檔


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM