括号的区别(只说几个常用的)
(( )) | 不支持-eq 这类的运算符 |
---|---|
$( ) | 执行shell命令,与反撤号等效 |
$(( )) | 简单算数运算,等效为$[ ] |
{ } | 对逗号,…等起作用,比如创建文件touch{1…5} |
$0 当前脚本的文件名
$? 上个命令的退出状态,或函数的返回值。退出状态是一 个数字,如是0,则执行成功,失败则为其它数字
$* 传递给脚本和函数的所有参数
$# 传递给脚本或函数的参数个数
$n 传递给脚本或函数的参数,n代表第几个参数
- read用法
-p 等待提示输入
-t 设置等待时间
-e 隐藏输入内容
1 #!/bin/bash
2 read -p "please input your name:" name
3 echo "name is $name"
4 read -p "please input your age:" age
5 echo "age is $age"
6
~
~
显示效果:
一、if 条件判断语句
1.单分支结构
if 条件表达式;then
命令 1
命令 2
…
fi
2.双分支结构
if 条件表达式;then
命令 1
命令 2
…
else
命令 1
命令 2
…
fi
3.多分支结构
if 条件表达式;then
命令 1
…
elif 条件表达式;then
命令 1
…
elif 条件表达式;then
命令 1
…
else
命令 1
…
fi
条件表达式的两种写法:
- [ ]
- command
二、for 循环
- for 变量 in 范围列表
do
命令 1
命令 2
…
done
2.范围列表 - seq
- {}
- 1 2 3 4 5
三、while 循环
1.while 条件表达式
do
命令 1
命令 2
…
done
2. 条件表达式
1.[]
2. true
3. 读取文本内容
cat 文本 | while read line
do
echo “$line”
done
4. while 死循环通常被用于在后台运行持续监控或者检测某项服务。
5. 后台运行脚本
- bash 脚本名称 & (这种用法关掉当前终端就停掉了脚本)
- nohup bash 脚本名称 & (关掉终端不会停掉脚本)
脚本输出会被重定向到当前目录下的 nohup.out 文本中 - 查看后台运行
jobs - bash 脚本名称 &: 停止此种脚本有三种方法
- 直接关掉当前终端
- ps aux 找到该脚本的 PID,然后使用 kill -p PID
- 使用 jobs 命令查看该脚本的序列号,然后使用 kill -9 %序列号
- if语句
if 条件表达式; then
命令
fi
例子:检查主机是否在线
#!/bin/bash
if ping -c 1 192.168.1.1 >/dev/null; then
echo "OK."
else
echo "NO!"
fi
- for语句
格式:
for 变量名 in 取值列表;do
命令
done
或者
for 变量名 in 取值列表;do
命令
done
例子1:编写脚本创建查看早中晚
1 #!/bin/bash
2 for time in morning afternoon evening
3 do
4 echo "this time is $time"
5 done
~
例子2:求和1到10
1 #!/bin/bash
2 s=0
3 for((i=1;i<=10;i=i+1))
4 do
5 s=$(($s+$i))
6 done
7 echo "the sum is $s"
- while语句
格式:
while 条件表达式; do
命令
done
例子:检测终端数量
#!/bin/bash
while true
do
num=`who | wc -l`
echo "当前打开终端数量为:$num"
sleep 5
done
复制代码
- case语句
格式:
case 模式名 in
模式 1)
命令
;;
模式 2)
命令
;;
*)
不符合以上模式执行的命令
esac
复制代码
例子:自己看把
1 #!/bin/bash
2 read -p "please choose yes/no:" cho
3 case $cho in "yes")
4 echo "your choose is yes";;
5 "no")
6 echo "your choose is no";;
7 esac
未完待续