Linux系统下shell的常用语句

1.if语句
可以判断,按上下先后顺序依次对比脚本内参数
格式:

	if

	then

	elif

	then

	else

	fi

例:使用if语句的格式写判断性脚本。
执行checkfiletype.sh
提示please input filename :
判断输入的文件是否存在,存在的话,属于目录,文件,链接的哪一种
不存在就显示 is not exist
并继续提示Please input filename
直到输入exit(大小写都退出,不能使用tr,因为还要判断这个真实文件的类型)

	if [ -L "$FILE" ]
    then
            echo "$FILE is softlink file"
    elif [ -f "$FILE" ]
    then
            echo "$FILE is common file"
    elif [ -d "$FILE" ]
    then
            echo "$FILE is direcotry!!"
    else
            echo $FILE is not exist!

在这里插入图片描述
脚本功能的检测:
在这里插入图片描述

######################################

2.for语句
赋予变量一个范围

	for   in

	do

	done

例:使用for 语句制作一个 10 s 的倒计时。

	for SEC in  {10..1}
	do
		echo -n $SEC is end
		echo -ne " \r"
		sleep 1
	done

在这里插入图片描述
脚本功能测试:
在这里插入图片描述
###############################
3.which 语句
知道什么条件再做什么
格式

		while

		do 

		done

例:结合for语句和which语句,编写一个倒计时一分十秒的脚本。

	SEC=10
	MIN=1
	for ((SEC=10;SEC>=0;SEC--))
	do
	        while [ "$SEC" = "0" ]
    do
            echo -ne "$MIN:$SEC is end"
            echo -ne " \r"
            sleep 1
            SEC=59
            ((MIN--))
    done
    while [ "$SEC" = "0" -a "$MIN" = "0" ]
    do
            exit 0
    done
    echo -ne "$MIN:$SEC is end"
    echo -ne " \r"
    sleep 1
done

在这里插入图片描述
脚本功能的检测:
在这里插入图片描述
###############################################
4.case 语句
if是按上下顺序依次判断,case是,并列判断,哪个条件符合调用哪个

格式

	case

	word1)

	action1

	;;

	word2)

	action2

	;;

	....

	action_last

	esac

例:编写脚本westos.sh 输入dog显示cat,输入cat显示dog,输入其他其他报错。
先用if语句写:

	if [ "$1" = "dog" ]
	then
	    echo cat
	elif [ "$1" = "cat" ]
	then
	    echo dog
	else
	    echo Error
	fi

在这里插入图片描述

用 sh -x 运行脚本,可以看到if语句的脚本逐层依次判断

在这里插入图片描述

使用case语句,写一个相同作用的脚本,westos1.sh

	case $1 in
    	dog)
    	echo cat
    	;; 
    	cat)
    	echo dog 
    	;;
    	*)
    	echo Error
	esac

在这里插入图片描述

使用 sh -x 运行脚本,可以发现,case只做一次判断
在这里插入图片描述
###################################
5.expect 语句
expect是自动应答命令用于交互式命令的自动执行

	 yum install expect

编写问题脚本
编写自动回答脚本
幻数不一样

spawn是expect中的监控程序,其运行后会监控命令提出的交互问题;

send 发送问题答案给交互命令
“\r” 表示回车

exp_continue 表示当问题不存在时继续回答下面的问题

expect eof 表示问题回答完毕退出expect环境

interact 表示问题回答完毕留在交互界面

set NAME [ lindex $argv n ] 定义变量 0 表示第一个

例:编写一个需要回答问题的脚本。
在这里插入图片描述

在这里插入图片描述

编写expect 自动交互回答脚本

	#!/usr/bin/expect
	set NAME [ lindex $argv 0 ] 
	set AGE [ lindex $argv 1 ] 
	set STUDY [ lindex $argv 2 ] 
	set FEEL [ lindex $argv 3 ] 
	spawn /mnt/ques.sh
	expect {
        "name"  { send "$NAME\r";exp_continue }
       "old"   { send "$AGE\r";exp_continue }
        "study" { send "$STUDY\r";exp_continue }
        "ok"    { send "$FEEL\r" }
	}
	expect eof 

在这里插入图片描述

执行交互脚本回答问题
在这里插入图片描述
注释调问题脚本的一个问题后,再次执行交互脚本回答
在这里插入图片描述
####################################
6.exit , break , continue
控制语句
exit 脚本直接退出
break 退出当前循环;后面的还要执行
continue 提前结束循环内部的命令,但不终止循环

例:编辑实验脚本,不加 exit , break ,continue 等参数的情况下执行

在这里插入图片描述
在这里插入图片描述

添加参数 exit 后 ,脚本执行会在exit 的时候退出,后面的脚本命令不再继续执行
在这里插入图片描述
在这里插入图片描述

将参数 exit 改换成 break 后, 执行脚本,for语句内的会停止执行,单for语句外的继续执行
在这里插入图片描述
在这里插入图片描述

将参数 break 改换成 continue ,将提前终止循环内的命令,但不会终止循环
在这里插入图片描述
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值