寫#!/bin/bash
,#! 告訴系統其後路徑所指定的程式即是解釋此指令碼檔案的 bash 程式。
chmod +x ./test.sh #使指令碼具有執行許可權
./test.sh #執行指令碼
your_name="harry"
注意,變數名和等號之間不能有空格
if condition
then
command1
command2
...commandn
fi
注意:必須以fi
結尾
if else-if else
if condition1
then
command1
elif condition2
then
command2
else
commandn
fi
#!/bin/bash
a=10
b=20
c="company"
val=`expr $a + $b`
echo "a + b : $val"
val=`expr $a - $b`
echo "a - b : $val"
val=`expr $a \* $b`
echo "a * b : $val"
val=`expr $b / $a`
echo "b / a : $val"
val=`expr $b % $a`
echo "b % a : $val"
if [ $a == $b ]
then
echo "a 等於 b"
fiif [ $a != $b ]
then
echo "a 不等於 b"
fiif [ $c = "company" ]
then
echo "c 是 company"
fi
輸出:
a + b : 30
a - b : -10
a * b : 200
b / a : 2
b % a : 0
a 不等於 b
c 是 company
注意:
echo "input something:"
read input
echo "your input is: $input"
輸出:
input something:
test
your input is: test
vim test.sh
:set ff?
檢查編碼格式,如果出現fileforma=dos
,則使用:set fileformat=unix
改變編碼。
因為作業系統是windows,在windows下編輯的指令碼,所以有可能有不可見字元。
指令碼檔案是dos格式的, 即每一行的行尾以 來標識, 其ascii碼分別是0x0d, 0x0a。
usage()
if [[ $# -eq 0 ]]; then
usage
fiwhile [ $# -gt 0 ]; do
case $1 in
-h|--help)
usage
shift 1
;;-d)
if [[ $2 ]]; then
outdir=$2
shift 2
else
usage
shift 1
fi;;
-u)if [[ $2 ]]; then
unzipdir=$2
shift 2
else
usage
shift 1
fi;;
*)
usage
shift 1
;;esac
done
if [[ "$outdir" = "" || "$unzipdir" = "" ]]; then
usage
fi
-c: 建立壓縮檔案
-x:解壓
-t:檢視內容
-r:向壓縮歸檔檔案末尾追加檔案
-u:更新原壓縮包中的檔案
這五個是獨立的命令,壓縮解壓都要用到其中乙個,可以和別的命令連用但只能用其中乙個。下面的引數是根據需要在壓縮或解壓檔案時可選的。
-z:有gzip屬性的
-j:有bz2屬性的
-z:有compress屬性的
-v:顯示所有過程
-o:將檔案解開到標準輸出
下面的引數-f是必須的
-f: 使用檔案名字,切記,這個引數是最後乙個引數,後面只能接檔名。
假設有變數var=cq_qq_2017071115
var=cq_qq_2017071115
# #號擷取,刪除左邊字元,保留右邊字元
echo $
#號是運算子,*_ 表示從左邊開始刪除第乙個 _ 號及左邊的所有字元
>qq_2017071115
# ##號擷取,刪除左邊字元,保留右邊字元
echo $
##*_ 表示從左邊開始刪除最後(最右邊)乙個 _ 號及左邊的所有字元
>2017071115
# %號擷取,刪除右邊字元,保留左邊字元
echo $
%_* 表示從右邊開始,刪除第乙個 _ 號及右邊的字元
>cq_qq
# %%號擷取,刪除右邊字元,保留左邊字元
echo $
%%_* 表示從右邊開始,刪除最後(最左邊)乙個 _ 號及右邊的字元
>cq
# 從左邊第幾個字元開始,及字元的個數
echo $
0代表從0開始,擷取6個字元
>cq_qq_
# 從左邊第幾個字元開始,一直到結束
echo $
7代表從7開始,擷取到最後
>017071115
# 從右邊第幾個字元開始,及字元的個數
echo $
其中的 0-7 表示右邊算起第七個字元開始,3 表示字元的個數
>707
# 從右邊第幾個字元開始,一直到結束
echo $
表示從右邊第七個字元開始,一直到結束
>7071115
比如現在檔案目錄為
cq_qq_2017071110_lo.tar.gz
cq_qq_2017071111_lo.tar.gz
cq_qq_2017071210_lo.tar.gz
cq_qq_2017071211_lo.tar.gz
現在使用
list_alldir() # 從路徑中取出檔名
filename=`echo $filename | awk -f '_' ''`
if [[ `echo $` = $2 ]]
then
tar zxf $file -c ./test #解壓檔案
fifi
done
}
其中filename=`echo $filename | awk -f '' ''`意思為將filename以'_'分割(awk -f ''),分割後為四段,分別為'cq','qq','2017071110','lo.tar.gz',然後我們取第三段(''),再echo輸出,最後賦值給filename。
再判斷if [[ `echo $` = $2 ]] 如果日期等於輸入的日期就執行,tar zxf \$file -c ./test
解壓檔案。
shell 基本使用
一 shell程式設計變數簡介 shell程式語言屬於弱語言,在使用變數前無需對變數進行宣告,變數的預設型別為 字串型別 可以通過echo 變數名 進行提取變數的值。在bash中,變數型別分為 環境變數 本地變數 區域性變數 位置變數 特殊變數,其中環境變數和本地變數是以作用域來進行區分。二 變數配...
shell基本使用教程
shell程式設計 1 沒有資料型別,都是字串,數值也時字串 建立變數 a hello echo aec ho a echo aech o echo 三者等價 echo ahe lloe cho hell ob a hello echo hello b ahello echo hel loba a ...
shell中sqlldr ctl的基本使用與示例
在shell指令碼中,向oracle資料庫表插入資料 要先確認環境是否有sqlldr命令 編碼 訂購狀態 產品編碼 產品訂購例項id 訂購生效時間 訂購失效時間 計費開始時間 受理工號 bboss商品名稱 商品規格編碼 商品例項id 產品名稱 產品規格編碼 產品訂購例項id 3511143538 0...