1. 程式人生 > >shell腳本基本用法

shell腳本基本用法

循環 and shel args 簡單 但是 文件是否存在 let 作用

下面是一些簡單常用的腳本,工作中可能會用到,記錄一下。

#!/usr/bin/env bash

#變量[=兩邊不要有空格], 在使用的時候需要用${變量名} 或者是$變量名
name="san"
echo $name
allName="zhang $name"
echo $allName

#-------------------------------------------------------------------------------

#變量做運算
# $[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
)


shell腳本基本用法