shell語法

1. shell腳本開頭

#!/bin/bash    #shell腳本開頭

2. 註釋

##單行註釋

:<<!#多行註釋

...

...

!

3. 字符串

name="java"

echo ${#name}   #統計name的長度

4. 反引號

反引號: 被``引起來的內容解釋器優先執行

5. 變量

name="yinyongjie";

echo $name 也可寫成 echo ${name}


$輸出變量

變量名和等號之間不能有空格

6.流程控制    

for循環

數字循環寫法一:

for((i=0;i<10;i++));

do 

   echo "$i-----"

done


數字循環寫法二:

for i in {1..10}

do

   ehoc "$i-----"

done



數字循環寫法三:

for i in $(seq 1 10)

do

  echo "$i---"

done


字符循環:

for i in `ls`

do

   echo "$i"

done


==等於 

-gt大於

-lt小於


if 語句語法格式:

if condition

then

    command1 

    command2

    ...

    commandN 

fi


if else 語法格式:

if condition

then

    command1 

    command2

    ...

   commandN

else

    command

fi


while 語句

while condition

do

    command

done


無限循環

while :

do

    command

done

或者

while true

do

    command

done


case語法  : 如果值沒有找到匹配的模式用*捕獲該值

case 值 in

模式1)

    command1

    command2

    ...

    commandN

    ;;


模式2)

    command1

    command2

    ...

    commandN

    ;;

esac


結束語

breakbreak命令允許跳出所有循環

continue  它不會跳出所有循環,僅僅跳出當前循環。

7. 標準輸入

read 命令從標準輸入中讀取一行,並把輸入行的每個字段的值指定給 shell 變量

8. 輸出

echo自動帶換行

printf不帶換行

-e開啓轉義

\n換行

\c不換行

例子1: 

echo -e "OK! \n" # -e 開啓轉義

echo "It it a test"

輸出結果:

OK!

It it a test

例子2:

#!/bin/sh

echo -e "OK! \c" # -e 開啓轉義 \c 不換行

echo "It is a test"

輸出結果:

OK! It is a test

9. 覆蓋和追加

  >輸出重定向(覆蓋)

  >>輸出重定向(追加)

10. 數組

語法:  array_name=(value1 ... valuen)

讀取數組:${array_name[index]}

獲取數組中的所有元素: ${my_array[*]} 或者  ${my_array[@]}

獲取數組的長度:  ${#my_array[*]} 或者 ${#my_array[@]}

遍歷數組如下: 

arr=(1 2 3 4 5)

for((i=0;i<${#arr[*]};i++));

do               

echo "------${arr[$i]}"

done

11. 函數

語法:可以帶function fun() 定義,也可以直接fun() 定義,不帶任何參數。

[ function ] funname [()]

{

    action;

    [return int;]

}

12. 日期

date

date +%Y%-m-%d    

date +%F#輸出格式:2017-01-01

date +"%Y-%m-%d %H:%M:%S"

date -d "+1 day"  +%Y-%m-%d

date -d "-1 day"  +%Y-%m-%d

date -d "+1 month"  +%Y-%m-%d

date -d "-1 month"  +%Y-%m-%d

date -d "+1 year"  +%Y-%m-%d#1年前

date -d "-1 year"  +%Y-%m-%d

date -d "+1 year" +%F

13. select

#!/bin/bash

host_list=("10.0.11.235" "10.0.11.236" "10.0.11.237" "10.0.11.238")

select host in ${host_list[*]};

do

    break

done

14.  shell傳參

第一種: $1  $2 

第二種: read

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