`
AllenHU0320
  • 浏览: 85740 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

鸟哥的Linux私房菜-基础学习篇7

 
阅读更多

39.Shell脚本

自动化管理的重要依据

追踪与管理系统的重要工作

简单的入侵检测功能

连续命令单一化

简单的数据处理

 

例1:第一个脚本

vi sh01.sh

#!/bin/bash

echo $PATH

echo -e "Hello World! \a \n"

exit 0

 

chmod a+x sh01.sh

sh sh01.sh 或./sh01.sh

 

例2:变量内容由用户决定

vi sh02.sh

#!/bin/bash

read -p "Please input your first name: " firstname

read -p "Please input your last name: " lastname

echo -e "\nYour full name is : $firstname $lastname"

 

例3:利用date建立文件

vi sh03.sh

#!/bin/bash

#1.让用户输入文件名称,并获取fileuser变量

echo -e "I will use 'touch' command to create 3 files."

read -p "Please input the filename what you want : " fileuser

#2.为了避免用户随意按Enter,使用变量分析是否设置了文件名?

filename=${fileuser:-"filename"}

#3.开始使用date命令来获取所需要的文件名

date1=`date --date='2 days ao' +%Y%m%d`

date2=`date --date='1 days ao' +%Y%m%d`

date3=`date +%Y%m%d`

file1="filename""date1" 

file2="filename""date2"

file3="filename""date3"

#4.建立文件名

touch $file1

touch $file2

touch $file3

 

40.使用test命令的测试功能

#test -e filename :该文件名是否存在

#test -f filename  :该文件名是否为文件

#test -d filename :该文件名是否为目录

#test -rwx filename

 

例4:使用test、&&和||

vi sh04.sh

#!/bin/bash

#1.让用户输入文件名,并判断用户是否真的输入了字符串

echo -p "Input a filename : " filename

test -z $filename && echo "You must input a filename. " && exit 0

#2.判断文件是否存在

test ! -e $filename && "The filename $filename do not exist " && exit 0

#3.开始判断文件类型与属性

test -f $filename && filetype="regular file"

test -d $filename && filetype="regular file"

#4.开始输出信息

echo "The filename : $filename is a $filetype"

 

41.使用判断符号[]

[  $name  ==  "VBird"  ]  注意空格

 

42.Shell脚本的默认变量($0,$1,$2...)

#/path/to/scriptname opt1 opt2 opt3 ...

$0                               $1     $2    $3

 

43.条件判断

if [  条件判断表达式  ]; then

      条件表达式成立时,可以执行的命令

fi

 

if [  条件判断表达式  ]; then

      条件表达式成立时,可以执行的命令

else

      条件表达式不成立时,可以执行的命令

fi

 

if [  条件判断表达式1  ]; then

      条件表达式1成立时,可以执行的命令

elif [  条件判断表达式2  ]; then

      条件表达式2成立时,可以执行的命令

else

      条件表达式不成立时,可以执行的命令

fi

 

case $变量名称 in

      "第一个变量内容")

             程序段

             ;;

      "第二个变量内容")

             程序段

             ;;

      *)

             程序段

             exit 1

             ;;

esac

 

44.使用函数功能

函数在shell脚本中类似与自定义的执行命令,最大的功能是简化了很多程序代码

function fname(){

      程序段

}

 

vi sh05.sh

#!/bin/bash

function printit(){

      echo "Your choice is $1"

}

case $1 in

    "one")

          printit 1

          ;;

    "two")

          printit 2

          ;;

     "three")

          printit 3

          ;;

      *)

          echo "Usage {one|two|three}"

          ;;

esac

 

sh sh05.sh one

 

45.循环

while [  condition  ]

do

     程序段

done

 

until [  condition  ]

do

     程序段

done

 

for ((  初始值;限制值;执行步长  ))

do

     程序段

done

 

s=0

for ((  i=1; i<=100; i=i+1 ))

do

     s=$(($s+$i))

done

 

for var in con1 con2 con3 ...

do

     程序段

done

 

46.Shell脚本的追踪与调试

#sh [-nvx] scripts.sh

-n:不执行脚本,仅检查语法错误

-v:在执行脚本前,先将脚本的内容输出到屏幕上

-x:将使用的脚本内容显示到屏幕上 

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics