Shell脚本编程语法篇1

           今天呢,我来将这两天学到的Shell语法做以总结。如有问题,欢迎提出!

1.if语句

     我们先来看一个if语句的例子,代码以及结果如下:

read val

if [ $val -eq 100 ]
then
	echo "hello"
fi


      其实shell的if语句和c语言的没有很大的区别,除了写法上有些差别,其他实现思想都是一样的。我们写的这段代码是先读入一个数,如果这个数等于100则输出“hello”。只是我们要注意的是,Shell的if语句是以 fi 结尾的,而且用then替代了c语言中的花括号。

2.:命令

对的,你没有看错, : 确实是一个命令,它的作用呢,主要有两个。

    (1)恒等。用到这个符号时可以表示一个条件恒等,不用经过其他判断。下面用个例子来说明一下吧。

if :;then
	echo "hello"
fi

就是不论怎么操作,总是恒等的,并且输出"hello"。

    (2)可以解决代码段为空的问题,如果不处理的话,可能会出现编译错误。下面也来一个例子说明:

read val
if test $val -eq 100 ;then
	echo "hello"
elif [ $val -le 100 ] ;then
	echo "world"
else
	:
fi
这段代码大家应该也都看得懂,我也就不一一解释了,直接看结果吧。

3.在Shell中&&和||的区别以及他们两个和-a和-o的区别与联系:

在Shell中呢,&&和||是连接两条命令的,而后面两个是连接两个条件的。我们可以看几个例子来具体说明:

echo "enter your admin"
read name

[ "X$name" == "Xadmin" ] && {
	echo "hello admin"
}

echo "enter your admin"
read name

[ "X$name" == "Xadmin" ] || {
	echo "hello admin"
}


test $val -eq 10 -a "str"=="this is a test"
#test $val -eq 10 && test "str"=="this is a test"

其实上面两个语句在作用上是等价的,但是我们还是可以发现在语句表示上两个还是有区别的。
4.case语句:

  其实Shell中case语句和c语言中的表示也大致相同,要注意的是呢,Shell中用;;代替了c语言中的break。下来我们还是看个例子。

read op
case $op in 
	'start' )
		echo "hello start"
	;;
	'stop')
		echo "hello stop"
	;;
	*)
		echo "hello default"
	;;
esac
实现结果如下图所示:


注意:还有一个可以代替$op的,我们试着用个$1看看是什么结果:

read op
case $1 in 
	'start' )
		echo "hello start"
	;;
	'stop')
		echo "hello stop"
	;;
	*)
		echo "hello default"
	;;
esac

其实这里的$1表示的是命令行的第一个参数,所以我们看到了上图的结果。

5.for循环

在Shell中for循环有两种表示方法,我们一起来看一看。

(1)第一种是和c语言类似的表示方法,用(())表示时,括号中间就可以用类c的语法来表示了。比如下面这个例子:

for ((i=0;i<10;i++))
do
	echo $i
done

结果是:


(2)还有一种表示方法是for...in,我们也来看个实例:

for i in {a..z}
do
	echo $i
done

6.while循环:

while循环的Shell版本的和c版本的也没太大区别,所以,不多说,我们来看例子:

i=0
sum=0
while [ $i -le 10 ]
do
	let sum+=$i
	let i++
done
echo $sum
结果如下图所示:

7.until循环

这个循环也和c语言中没有太大区别,所以我们通过一个实例来看看基本语法。

i=0
until [ $i -gt 5 ]
do
	echo $i
	let i++
done
echo "done... $i"
实验结果是:



这里需要强调的是,until循环的判断条件比较特别,比如上面的例子就是表示,当i的值小于等于5的时候都进入循环,其他情况则结束。

                                                                               好了,今天的基本语法就说这些,谢谢大家!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值