标签:shell text 基础 state marks nodes type id
===shell脚本常用赋值的两种方式
1、user=$(hostname)
2、user=`hostname`
===循环自加1常用方式
1、i=$(($i+1))
2、let "i = i + 1"
3、let "i++" 或者let i++
4、i=`expr $i + 1`
5、i=$(expr $i + 1)
===退出脚本
exit 1 异常退出脚本
exit 0 正常结束脚本
===标准输出、错误输出重定向到/dev/null
command 2>&1 >/dev/null
command >& /dev/null或者command >& >/dev/null
===检查当前用户是否是超级用户
if [ $UID -eq 0 ];then echo "user is root";fi
who -u 输出当前用户uid
echo $USER 输出当前用户名
===shell内定变量
$0 当前shell脚本名,$#脚本总共有几个参数,$* 所有参数,
$?显示上一次命令执行返回值,成功返回0,失败返回1
$1、$2等代表第一个参数、第二个参数等
各流程控制语句语法
if结构体
if [];then command;fi
if [];then command;elif [];else command2;fi
if [];then command;elif [];then command2;else command3;fi
while结构体
while 判断;do command;done
for结构体
for x in y;do command;done
case结构体
case x in;y) command;;z) command;esac
条件测试语句
文件测试语句、逻辑测试语句、整数值比较语句、字符串比较语句
1、文件测试语句
-d 测试文件是否为目录,是为真
-e 测试文件是否存在,是为真
-f 测试文件是否为一般文件,是为真
-r 测试当前用户是否有权限读取,是为真
-w 测试当前用户是否有权限写入,是为真
-x 测试当前用户是否有权限执行,是为真
2、逻辑测试语句
&& 与,前面执行成功才会执行后面
|| 或,前面执行失败才会执行后面
! 非,执行结果取反
如:[ ! $USER = root ] && echo "user" || echo "root" 判断当前用户,管理员则输出root,普通用户输出user
a && b a执行成功才执行b
a || b a执行失败才执行b
3、整数值比较语句
整数比较运算符仅可以比较数字
-eq 是否等于
-ne 是否不等于
-gt 是否大于
-lt 是否小于
-ge 是否大于或者等于
-le 是否小于或者等于
如:FreeMem=free -m | grep Mem: | awk '{print $4}'
[ $FreeMem -lt 1024 ] && echo "Insufficient Memory" 判断系统可用内存小于1024M时,输出警告
4、字符串比较语句
= 比较字符串内容是否相同
!= 比较字符串内容是否不同
-z 判断字符串内容是否为空
如:[ $LANG != "en.US" ] && echo "Not en.US" 判断当前系统语言是否en.US,否则输出警告
流程控制语句例子
if例子
#!/bin/bash
ip=$(cat ips.txt)
for i in $ip
do
ping -c 3 -W 3 -i 0.2 $i 2>&1 >/dev/null
if [ $? -eq 0 ];then
echo "Host $i is online"
else
echo "Host $i is offline"
fi
done
for例子
#!/bin/bash
ip=$(cat ips.txt)
for i in $ip
do
ping -c 3 -W 3 -i 0.2 $i 2>&1 >/dev/null
if [ $? -eq 0 ];then
echo "Host $i is online"
else
echo "Host $i is offline"
fi
done
while例子
#!/bin/bash
PRICE=$(expr $RANDOM % 1000)
TIMES=0
echo "商品实际价格为0-999之间,猜猜看是多少?"
while true
do
read -p "请输入您猜测的价格数目:" P
let "TIMES = TIMES + 1"
if [ $P -eq $PRICE ];then
echo "恭喜您答对了,实际价格是 $PRICE"
echo "您总共猜测了 $TIMES 次"
exit 0
elif [ $P -gt $PRICE ];then
echo "太高了!"
else
echo "太低了!"
fi
done
case例子
#!/bin/bash
read -p "请输入一个字符,并按Enter键确认:" KEY
case "$KEY" in
[0-9])
echo "您输入的是数字"
;;
[a-z]|[A-Z])
echo "您输入的是字母"
;;
*)
echo "您输入的是其他字符"
esac
标签:shell,
text,
基础,
state,
marks,
nodes,
type,
id
From: https://www.cnblogs.com/gpysir/p/18449136