linux shell脚本编程

  1. shell是一个命令行解释器,采用交互的方式,遵循相应的语法规则将输入的命令加以解释,并传给系统,即是一种命令语言,也是一种程序设计语言,是用户使用linux的桥梁;

  1. shell文件是由shell命令组成的文件,vim文本编辑的,不可编译,vim文件保存后,不具备执行权限,需要采用命令chmod改变文件属性(chmod x+filename),增加权限后即可执行;即shell编程有三个步骤:

  1. shell的两个版本

  1. shell编程都是一样的

#!/bin/sh      //告诉linux内核使用的shell版本为sh;
  1. shell编程注意点

  • 赋值(=)的左右两边不能有空格;

  • echo是输出命令

  • if语句分为单分支、双分支、多分支;if后面必须加条件,条件后必须有then关键字;单双分支结尾必须有且仅有1个fi;多分支结尾必须有2个fi;且条件表达式中[]该符号向里必须有一个空格,里面的判断条件,例如=左右两边必须有空格;

  1. 默认系统变量,变量结合是先右后左

  • $#:传入脚本的命令行参数个数(不包含命令本身)

  • $*:所有命令行参数值、在各参数值之间有空格

  • $o:命令本身

  1. &&、||

与或条件判断运算符具有短路特性,即当运算符前面的表达式能够决定该语句的结果(1/0),程序就不会查看运算符后面的表达式;例如当与运算符前面的表达式是0,则整个语句都是假;或条件运算符前面的表达式是1,则整个语句是真;

  1. shell中的for循环

for var in [list]    //var是变量,list是依次取列表内所有的内容
do                   //可以看出,for/do/done是shell的关键保留字
    #code block
done

一个例子:实现查询对应或者当前目录下一共有几个文件:

#!/bin/bash
counter=0
for files in *    //*是通配符
do 
    counter=`expr $counter+1`
done
echo "There are $conuter files in `pwd` we need to process"

另一个例子:一个星期有多少天:

#!bin/bash
for day in sun mon tue wed thu fri sat
do
    echo $day    //本行变量前面必须添加$符号
done
  1. shell中的whlie:条件为真时运行

一个例子:时间数字倒序输出:

#!/bin/bash
echo -n "please enter number:"
read n
sd=0
rev=""
on=$n
echo "$n"
while [ $n -gt 0 ]
do 
    sd=$(( $n % 10 )) # get Renainder
    n=$(( $n / 10 )) #get next digit
    rev=$( echo $rev$sd)
done
echo "$on in a reverse order $rev"
  1. shell中的until循环:条件为假时运行

一个例子:将文件移动到对应目录,若目的地有同名文件则对该文件进行监视,当目标地的文件被删除后,进行移动,并报告结果:

#!/bin/bash
if [ "$s1" = "" ] || [ "$s2" = ""]    //注意[]向内必须留有一个空格
then
    echo "please enter file name"
    exit 1
fi
if [ -e $s2 ]
then
    echo "the file already exists"
    until [ ! -f $s2 ]
    do
        sleep 1
    done
fi
if [ ! `mv $s1 $s2` ]
then
    echo "mv sucessful"
else
    echo "mv error"
fi
  1. shell函数调用

函数在shell中调用成功后返回值0(注意与C语言不同),函数调用不成功则返回值1;

  1. shell中的case语句,case语句的结尾必须以esac结尾(反写case);

一个例子:输入对应字母,返回对应字母(更改后的):

#!/bin/bash
echo "hit a key,then hit ruturn."
read Keypress
case "$Keypress" in
    [A-Z]) echo "Uppercase letter";;    //注意这里只有一个‘)’,没有前面的一半;
    [a-z]) echo "Lowercase letter";;
    [0-9]) echo "Digit";;
    *) echo "Punxtuation,whitespace,or other";;
esac
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值