bash编程之case语句及脚本选项_2019.03.27_12:00-13:00_22:00-24:00_mage_linux_log

本文介绍了bash编程中的选择结构,重点讲解了case语句的使用,并给出了多个练习,包括编写接受选项和参数的脚本,以及展示系统登录用户信息的脚本。内容涉及if语句的单分支、双分支和多分支,以及case语句的语法结构。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

面向过程的编程

控制结构
顺序结构
选择结构
循环结构

选择结构

if:单分支;双分支;多分支
单分支
if CONDITION; then
statement
fi

双分支
if CONDITION; then
statement
else
statement
fi

多分支
if CONDITION; then
statement
elif CONDITION2; then
statement
else
statement
fi

case语句:选择结构

case SWITCH in
value1)
statement

;;
value2)
statement

;;
*)
statement

;;
esac
value#是SWITCH的某个值;当作字符比较,所以以前的globbing字符都可以使用[a-zA-Z],…

练习1:

#!/bin/bash
#
#case.sh
case $1 in 
[0-9])
echo "a num" ;;
[a-z])
echo "lower" ;;
[A-Z])
echo "upper" ;;
*)
echo "special char" ;;
esac

练习2:

#!/bin/bash
#
#service.sh
case $1 in
'start')
echo "start server...";;
'stop')
echo "stop server...";;
'restart')
echo "reatart server...";;
'status')
echo "running...";;
*)
echo "usage:\`bashname $0` {start | stop | restart | status}"
esac

练习3:

写一个脚本,可以接受选项及参数;之后获取每一个选项及选项的参数;并根据选项及参数作出特定操作
参考 adminusers.sh --add tom,jerry --del tom,blair -v|–verbose -h|–help

#!/bin/bash
#
#debug.sh
DEBUG=0
ADD=0
DEL=0
if [ $# -gt 0 ]; then
for I in \`seq 0 $#\`; then
case $1 in 
-v|--verbose)
DEBUG=1
shift 
;;        #跳过引用的第一个变量,接下来$1将引用所给的第二个变量
-h|--help)
echo "Usage:\`basename $0\` --add USERLIST --del USERLIST -v | --verbose -h | --help"
exit 0
;;
--add)
ADD=1
ADDUSERS=$2
shift 2
;;
--del)
DEL=1
DELUSERS=$2
shift 2
;;
*)
echo "Usage"\`basename $0` --add USERLIST --del USERLIST -v | --verbose -h | --help";;
exit 7
;;
esac
fi
done

if [ $ADD -eq 1]; then
	for USERS in \`echo \ $ADDUSERS  | sed s@,@  @g`; do  #把所给的用户列表中逗号替换为空格
		if id $USER &> /dev/null; then
		[ $DEBUG ] && ehco "User $USER exists."
		else
		useradd $USER
		[ $DEBUG ] && echo "Add user $USER finished."
	fi
done

if [ $DEL -eq 1]; then
	for USERS in \`echo \ $DELUSERS  | sed s@,@  @g`; do  #把所给的用户列表中逗号替换为空格
		if id $USER &> /dev/null; then
		userdel $USER
		[ $DEBUG ] && ehco "Delete user $USER finished."
		else
		[ $DEBUG ] && echo "User $USER exists."
	fi
done

练习4:

写一个脚本showlogged.sh,其用法为:
showlogged.sh -v -c -h|–help
其中,-h选项只能单独使用,用于显示帮助信息;-c选项时,显示当前系统登录的所有用户数;如果同时使用了-v选项,则显示登录的用户数后显示登录的用户的相关信息:如:
Logged users:4.
They are:
root tty2 Feb 18 02:41
root pts/1 Mar 8 08:36 (192.168.110.177)
root pts/5 Mar 8 05:25 (192.168.110.177)
hadoop pts/7 Mar 8 12:28 (192.168.110.177)

#!/bin/bash
#
declare -i SHOWNUM=0
declare -i SHOWDETAIL=0

for I in \`seq 1 $#\`; do
if [ $# -gt 0 ]; then 
case $1 in
-h|--help)
	echo "Usage:\`basename $0\` -h|--help -c|--counts -v|verbose"
    exit 0;;
-v|--verbose)
	let $SHOWDETAIL=1
	shift
	;;
-c|--counts)
	let SHOWNUM=1;;
*)
	echo "Usage:\`basename $0\` -h|--help -c|--counts -v|verbose"
esac
fi
done

echo $SHOWNUM $SHOWDETAIL 

if [ $SHOWNUM -eq 1 ]; then
	echo "Logged users:	\`who | wc -l\`."
	if [ $SHOWNUM -eq 1 ]; then
		echo "They are:	"
		who
	fi	
fi
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值