区分三种界定符
:将命令的执行输出作为变量的值
var=`cat a.txt`
$():作用同上
var=$(cat a.txt)
read:从键盘获取变量值进行赋值
格式:read[-p"提示信息"]变量名
-p可选,-t可指定超时秒数
终端显示控制:
stty -echo //关闭回显
stty echo //打开回显
添加用户shell脚本
#!/bin/bash
read -p ["请输入用户名"] name
useradd $name
stty -echo
read -p ["请输入密码"] passwd
stty echo
echo $passed | passed --stdin $name &> /dev/null
定义全局变量:
export a=11
a=11
export a
对当前shell和子shell都有效
运算:
expr $a + $b
echo $[$a + $b]
echo $[a + b]
echo $((a+b))
自增自减
let i++;echo $i
bc:小数运算和比较
echo "12 + 12" | bc
echo "12 >= 12" | bc //返回值 1为真 0为假
比较:
test表达式
[ 表达式 ]:中括号两边有空格
字符串的比较:== !=
&& ||
-z:是否为空 为空为真
[-z $a] //
! -z:不为空为真
-n :不为空为真
整数比较
-gt:大于
-eq :等于
-lt :小于
-ge :大于等于 greater and equal
-le:小于等于 lesser and equal
-ne:不等于 not equal
[ 6 -gt 7]
脚本实例:
要求写shell脚本判断一个IP地址是否可以ping通
要求
交互式,ping,比较和判断
#!/bin.bash
read -p ["请输入ip地址"] ip
ping -c 4 -i 0.1 $ip &> /dev/null
[ $? -eq 0 ] && echo yes || echo no
条件判断
if 条件判断
then
执行的命令
fi
if 条件判断:then
执行的命令
fi
列表式循环
for i in list
do 命令
done
练习
1、新建用户并且创建密码的shell脚本
//新建服务器用户并设置密码的脚本
#!/bin/bash
read -p ["请输入用户名"] name
useradd $name
stty -echo
read -p ["请输入密码"] passwd
stty echo
echo $passed | passed --stdin $name &> /dev/null
2、检测ip地址是否可以ping通,ping通返回yes否则返回no
#!/bin.bash
read -p ["请输入ip地址"] ip
ping -c 4 -i 0.1 $ip &> /dev/null
[ $? -eq 0 ] && echo yes || echo no
3、检测当前用户是否为root用户,如果是使用yum安装vstfpd,如果不是返回该用户不是root用户
#!/bin/bash
USER=`whoami`
if [ $USER == 'root' ]; then
yum -y install vsftpd
else
echo "非管理员用户"
fi
4、输入学生考试分数,85-100为优秀,70-84为合格,其余为不合格
#!/bin/bash
read -p "输入成绩:" sc
if [ $sc -ge 85 -a $sc -le 100 ];
then echo "优秀"
elif [ $sc -ge 70 -a $sc -le 84 ];
then echo "合格"
else echo "不合格"
fi
本文详细介绍Shell脚本中的变量赋值方法,包括使用反引号、圆括号及read命令,阐述了stty命令的使用场景,演示了用户添加、IP地址连通性检测、用户权限检查及成绩评价等实用脚本案例。
1779

被折叠的 条评论
为什么被折叠?



