阅读背景:

shell脚本基本用法

来源:互联网 

下面是一些简单常用的脚本,工作中可能会用到,记录一下。

#!/usr/bin/env bash

#变量[=两边不要有空格], 在使用的时候需要用${变量名} 或者是$变量名
name="san"
echo $name
allName="zhang $name"
echo $allName


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

注意: 在IDEA中编写shell的时候,要将行尾符号设置为LF方式,而不是windows 的CRLF方式。



#-------------------------------------------------------------------------------
$# 是传给脚本的参数个数

下面是一些简单常用的脚本,工作中可能会用到,记录一下。

#!/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
)



是脚本本身的名字

下面是一些简单常用的脚本,工作中可能会用到,记录一下。

#!/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
)



是传递给该shell脚本的第一个参数 是传递给该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 "参数

下面是一些简单常用的脚本,工作中可能会用到,记录一下。

#!/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
)



" echo "参数 " echo "参数 " 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 ) #!/usr/bin/env ba



你的当前访问异常,请进行认证后继续阅读剩余内容。

分享到: