Linux(RHEL) 04day随笔(Shell基础)

1.Shell脚本

1.1 shell 脚本,命令的堆积,有交互式和批处理式,使用较多的是批处理式的(不需要人为干预)。

脚本的组成:
1.脚本声明
	#!/bin/bash
2.脚本注释
	# 该脚本作安装环境用
3.脚本命令
	pwd,ls......

1.2 接收用户的参数:

以便灵活完成工作,Linux 内设了接收参数的变量:
$0 :对应当前 Shell 脚本程序的名称;
$# :对应总共有几个参数;
$* :对应所有位置的参数值;
$? :对应显示上一次命令的执行返回值(0与非0:0为执行成功;非0为执行失败,也可以视为执行命令后报错)
$1,$2,$3 .....:分别对应第N个位置的参数值。

1.3 判断用户的参数:

测试语句格式:[ 条件表达式 ]		注意条件表达式两边均有空格!

条件测试语句可以分为以下4种:
文件测试语句
逻辑测试语句
整数值比较语句
字符串比较语句

文件测试参数
	操作符		作用
	-d			测试文件是否为目录类型
	-e			测试文件是否存在
	-f			判断是否为一般文件
	-r			测试当前用户是否有权限读取
	-w			测试当前用户是否有权限写入
	-x			测试当前用户是否有权限执行

逻辑测试:
	逻辑‘’与‘’:运算符号是&&,它表示当前面的命令执行成功后才会执行它后面的命令;
	逻辑“或”:运算符号为||,表示当前面的命令执行失败后才会执行它后面的命令;
	逻辑“非”:在Linux系统中的运算符号是一个叹号(!),它表示把条件测试中的判断结果取相反值。
	
整数比较运算符
	操作符		作用
	-eq			是否等于
	-ne			是否不等于
	-gt			是否大于
	-lt			是否小于
	-le			是否等于或小于
	-ge			是否大于或等于

字符串比较运算符
	操作符		作用
	=			比较字符串内容是否相同
	!=			比较字符串内容是否不同
	-z			判断字符串内容是否为空

2.流程控制语句

2.1 if条件测试语句

	单分支 if 语句:
					if 条件测试操作(目录不存在)
					then 命令序列(创建该目录)
					fi

	双分支 if 语句:
					if 条件测试操作(能 ping 通)
					then 命令序列(提示服务器正常运行)
					else 命令序列(报警服务器出现问题)
					fi
					
	多分支 if 语句:(else if 可缩写为:elif)
					if 条件测试操作1(分数85-100)
					then 命令序列1(判为优秀)
					elif 条件测试操作2(70-84)
					then 命令序列2(判为合格)
					else
						 命令序列3(判为不合格)
					fi
					
	eg:
		#!/bin/bash
		read -p "Enter your score(0-100):" GRADE
		if [ $GRADE -ge 85 ] && [ $GRADE -le 100 ] ; then
		echo "$GRADE is Excellent"
		elif [ $GRADE -ge 70 ] && [ $GRADE -le 84 ] ; then
		echo "$GRADE is Pass"
		else
		echo "$GRADE is Fail" 
		fi

2.2 for条件循环语句

	for 变量名(用户名) in 取值列表(列表文件)
	do
		命令序列(创建用户并设置密码)
	done
	
	eg:
	#!/bin/bash
	read -p "Enter The Users Password : " PASSWD
	for UNAME in `cat users.txt`
	do
	id $UNAME &> /dev/null
	if [ $? -eq 0 ]
	then
	echo "Already exists"
	else
	useradd $UNAME &> /dev/null
	echo "$PASSWD" | passwd --stdin $UNAME &> /dev/null
	if [ $? -eq 0 ]
	then
	echo "$UNAME , Create success"
	else
	echo "$UNAME , Create failure"
	fi
	fi
	done
	
	运行结果:
	[root@linuxprobe ~]# bash createuser.sh
	Enter The Users Password : linuxprobe
	andy , Create success
	barry , Create success
	carl , Create success
	duke , Create success
	eric , Create success
	george , Create success

2.3 while条件循环语句

	while 条件测试操作(为猜中价格)
	do
		命令序列(反复猜测商品价格)
	done

eg:
	[root@linuxprobe ~]# vim Guess.sh
	#!/bin/bash
	PRICE=$(expr $RANDOM % 1000)
	TIMES=0
	echo "商品实际价格为0-999之间,猜猜看是多少?"
	while true
	do
	read -p "请输入您猜测的价格数目:" INT
	let TIMES++
	if [ $INT -eq $PRICE ] ; then
	echo "恭喜您答对了,实际价格是 $PRICE"
	echo "您总共猜测了 $TIMES 次"
	exit 0
	elif [ $INT -gt $PRICE ] ; then
	echo "太高了!"
	else
	echo "太低了!"
	fi
	done

在这里插入图片描述

在这里插入图片描述

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值