下面是一些簡單常用的腳本,工作中可能會用到,記錄一下。
#!/usr/bin/env bash
#變量[=兩邊不要有空格], 在使用的時候需要用${變量名} 或者是$變量名
name="san"
echo $name
allName="zhang $name"
echo $allName
#-------------------------------------------------------------------------------
注意: 在IDEA中編寫shell的時候,要將行尾符號設置為LF方式,而不是windows 的CRLF方式。
#-------------------------------------------------------------------------------
$# 是傳給腳本的參數個數
$0 是腳本本身的名字
$1 是傳遞給該shell腳本的第一個參數
$2 是傳遞給該shell腳本的第二個參數
$@ 是傳給腳本的所有參數的列表
$* 是以一個單字符串顯示所有向腳本傳遞的參數,與位置變量不同,參數可超過9個
$$ 是腳本運行的當前進程ID號
$? 是顯示最后命令的退出狀態,0表示沒有錯誤,其他表示有錯誤
#-------------------------------------------------------------------------------
#變量做運算
# $[a + b]
a=4
b=5
c=$[a + b]
echo "c=$c"
echo $[a * b]
echo $[a + b]
echo $[3 * 10]
#-------------------------------------------------------------------------------
#if條件
# [注意:1. 中括號兩邊需要有空格]
#- eq —比較兩個參數是否相等(例如,if [ 2 –eq 5 ])
#-ne —比較兩個參數是否不相等
#-lt —參數1是否小於參數2
#-le —參數1是否小於等於參數2
#-gt —參數1是否大於參數2
#-ge —參數1是否大於等於參數2
#-f — 檢查某文件是否存在(例如,if [ -f "filename" ])
#-d — 檢查目錄是否存在
if [ $c -lt 10 ]
then
echo "if 執行了。。"
fi
#-------------------------------------------------------------------------------
#if-else條件
if [ $c -gt 10 ]
then
echo "1";
else
echo "2";
fi
#-------------------------------------------------------------------------------
#if else-if else
if [ $c -gt 10 ] && [ $b -lt 5 ]
then
echo "if-elseif -1";
elif [ $c -lt 10 ]
then
echo "if-elseif -2";
else
echo "if-elseif -3";
fi
#-------------------------------------------------------------------------------
#swith
#-------------------------------------------------------------------------------
#數組
array_name=(value1 valuen)
my_array=(A B "C" D)
#-------------------------------------------------------------------------------
#for循環
# 遍歷數組[循環數組的方式]
for item in ${my_array[@]}
do
echo "循環中 $item"
done
#遍歷列表[]
for var in item1 item2 item3
do
echo "for列表輸出-----$var"
done
#-------------------------------------------------------------------------------
#while循環
a=1
b=10
c=20
#while condition #單條件用(),雙層括號中間不能有空格;多條件用[]
#while (($a <=5)) 單條件
while [ $a -lt 5 ] && [ $b -gt 5 ] && [ $c -gt 0 ] #多條件
do
echo "while循環測試 a=$a";
let "a++" # i++操作
let "b--"
done
#-------------------------------------------------------------------------------
#函數定義
#函數注意事項:
#1. 函數調用一定要在函數聲明之后
#2. 函數的返回值只能是數值,范圍0-256
#3. 函數內的局部變量用local聲明,且作用范圍為函數體內
#4. 定義函數的形參不用顯式聲明
function testfun(){
local var="函數內的局部變量" #局部變量
local var1=4
echo "參數 $1"
echo "參數 $2"
echo "參數 $3"
echo "所有的參數一塊輸出 $*"
echo $var
echo $var1
return
}
#函數調用
testfun param1 param2
total=$(testfun param1 param2)
echo "----------------------------------"
echo $total
#-------------------------------------------------------------------------------
# shell腳本結合 linux命令使用
#注意:
#1. Linux 的命令可以直接在shell中使用
#2. 單行命令后面可不用強制加分號 ; 但是如果單行有多個命令,則每個命令后面需要加分號
#第一種方式 data=`command`
data=`ls . |wc -l`
data=`find E:/home/sdata/sdata3-staticindex/ -name "*.data" |xargs grep "1001681445" `
#echo $data
#第二種方式 data=$(command)
data1=$(ls .|wc -l)
#echo $data1
#-------------------------------------------------------------------------------
# shell 腳本代碼塊直接在命令行執行 ,直接用()包住即可
(
#for fileName in `find . -name "30012.2019010*.log" |more`
for fileName in $(find . -name "30012.2019010*.log"|more)
do
echo "start unzip $fileName"
unzip $fileName
done
)