Shell我的總結

一、開頭註釋代表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 中執行,在被調用的腳本中聲明的變量和環境變量, 均可以在主腳本中進行獲取和使用,至關於合併兩個腳本在執行。

相關文章
相關標籤/搜索