一、開頭註釋代表shell類型shell
#!/bin/bash
二、輸入內容到某文件bash
echo begin.>begin.log
三、判斷某目錄下肯定文件是否存在函數
if [ -f "./begin.log" ];then echo 文件存在 else echo 文件不存在 fi
四、判斷某目錄下某種後綴文件是否存在code
if ls ./*.txt > /dev/null ;then echo 文件存在 else echo 文件不存在 fi
五、將某目錄下的文件移動到另外一個目錄中繼承
mv ./default/*.txt ./
六、將某目錄下多個文件合併爲一個文件並輸出到某目錄下it
cat ./*.txt > ./data/data.txt
七、獲取當前時間class
curr_year=`date +%Y` curr_month=`date +%m` curr_day=`date +%d` curr_hour1=`date +%k` curr_hour2=`date +%M` dt=${curr_year}${curr_month}${curr_day} curr_hour=${curr_hour1}${curr_hour2}
八、將輸出值保存到變量中test
username=$(echo xiao) echo ${username}
九、判斷某目錄是否已存在變量
if [ -d "./bak/${dt}" ];then echo 目錄已存在 else mkdir ./bak/${dt} fi
十、定義函數date
lab1() { mv ./*.txt ./bak/${dt}/ source ./test1.sh mv ./log/*.log ./bak/${dt}/${curr_hour}.log if ls ./data/*.bad > /dev/null ;then mv ./data/*.bad ./bak/${dt}/${curr_hour}.bak else echo no *.bad file fi source ./test2.sh echo "call back" rm ./begin.log exit } lab2() { rm ./begin.log exit }
須要注意的是函數的定義應放置在腳本的最上方,保證調用的時候已經聲明瞭該函數,調用函數的時候直接寫函數的名稱就好了,例如
if [ -f "./begin.log" ];then lab2 else lab1 fi
上述例子實現了對於不一樣狀況下調用不用函數
十一、shell文件調用其餘shell文件有三種方式
a、fork:新開一個子 Shell 執行,子 Shell 能夠從父 Shell 繼承環境變量,可是子 Shell 中的環境變量不會帶回給父 Shell。
b、exec:在同一個 Shell 內執行,可是父腳本中 exec
行以後的內容就不會再執行了
c、source:在同一個 Shell 中執行,在被調用的腳本中聲明的變量和環境變量, 均可以在主腳本中進行獲取和使用,至關於合併兩個腳本在執行。