shell脚本--分支语句之if、case

分支语句一般用if或者case。下面直接以一个简单的shell程序来演示if和case的用法。

(1)if用法

案例:程序参数为一个用户名,判断参数的个数,如果参数不是1个,提示用户参数个数不正确,否则,判断该用户是否存在,如果存在,则输出用户的id,如果不存在,先创建用户再输出该用户的id。

#!/bin/bash

# 程序参数为用户名,
# 如果参数个数为1,则输出该用户的id
# 否则创建该用户,并输出用户id

if [ $# -ne 1 ];then
	echo "输入参数个数不为1,请重新执行脚本"
else
	id=$(id -u $1)
	if [ $? -eq 0 ];then
		echo "用户$1已存在,id为$id"
	else
		useradd $1
		id=$(id -u $1)
		echo "用户$1不存在,现已创建,id为$id"
	fi
fi

测试结果:

[root@172-0-10-222 shell-test]# ./test_if.sh 
输入参数个数不为1,请重新执行脚本
[root@172-0-10-222 shell-test]# ./test_if.sh xiaoming
用户xiaoming已存在,id为1001
[root@172-0-10-222 shell-test]# ./test_if.sh xiaohong
id: xiaohong: no such user
用户xiaohong不存在,现已创建,id为1002

注意:

(a)运行该脚本文件之前,如果直接./运行的话,需要该文件具有可执行权限,可以通过命令chmod +x test_if.sh来修改。

(b)因为程序中需要创建用户,因此当前登录用户应该为root

 

(2)case用法

案例:请输入一个字符,判断该字符是数字、字母还是其他字符

#!/bin/bash

# 输入一个字符,判断该字符是数字、字母或者其他字符

read -p "请输入一个字符:" ch

case $ch in
	[0-9])
	echo "数字"
	;;
	[a-z]|[A-Z])
	echo "字母"
	;;
	*)
	echo "其他字符"
	;;
esac

测试结果:

[root@172-0-10-222 shell-test]# ./test_case.sh
请输入一个字符:a
字母
[root@172-0-10-222 shell-test]# ./test_case.sh 
请输入一个字符:3
数字
[root@172-0-10-222 shell-test]# ./test_case.sh 
请输入一个字符:k
字母
[root@172-0-10-222 shell-test]# ./test_case.sh 
请输入一个字符:A
字母
[root@172-0-10-222 shell-test]# ./test_case.sh
请输入一个字符:.
其他字符

 

你可能感兴趣的:(linux&&shell,shell,linux,分支语句,if,case)