Shell Scripts介绍
概念
Shell脚本是包含一系列命令的文本文件
Shell读取此文件并执行命令
应用场景
重复性操作
批量处理事物
自动化运维
定时任务执行
预定义变量
选项 | 说明 |
---|---|
$# | 命令行参数或位置参数的数量 |
$? | 最近一次执行的命令或shell脚本的初始状态 |
$* | 表示所有的位置参数,其值是所有位置参数的值 |
$* | 变量是shell脚本里面的进程ID。Shell脚本经常使用$$变量组织临时文件名,确保文件名的唯一性 |
位置变量
$n:$0代表命令本身,$1-
9
代
表
顺
序
参
数
编
号
,
大
于
10
的
话
使
用
括
号
,
如
9代表顺序参数编号,大于10的话使用括号,如
9代表顺序参数编号,大于10的话使用括号,如{10}
数值运算符
选项 | 说明 |
---|---|
-eq | 等于 |
-ne | 不等于 |
–gt- | 大于– |
-lt | 小于 |
-le | 小于或等于 |
–ge- | 大于或等于 |
逻辑运算符
选项 | 说明 |
---|---|
-a或&& | 逻辑与 |
-o或|| | 逻辑或 |
-!- | -逻辑否- |
字符串运算符
选项 | 说明 |
---|---|
= | 等于 |
!= | 不等于 |
–z- | -判断是否为空- |
文件运算符
选项 | 说明 |
---|---|
-d | 判断是否为目录 |
-e | 判断文件或目录是否为存在 |
–f- | -判断是否为文件- |
-r | 判断文件或目录针对当前用户是否可读 |
-w | 判断文件或目录针对当前用户是否可写 |
–x | -判断文件或目录针对当前用户是否可以执行- |
Shell流程控制语句
if语句结构
if 条件测试语句
then
action
[elif 条件
then
action
else
action
]
fi
//if经常与test命令结合使用(本例使用test相当于在条件外加一层中括号)
num1=$[2*3]
num2=$[1+5]
if test $[num1] -eq $[num2]
then
echo '两个数字相等!'
else
echo '两个数字不相等!'fi
for循环
Shell的循环结构跳出循环的关键字:break和continue(和Java用法类似)
for var in item1 item2 ... itemN //当变量值在列表里,for循环即执行一次所有命令
do
command1
command2
...
commandN
done
for((i=0;i<=5;i++)){ //类似java的for循环
command1
command2
...
commandN
}
while循环
while condition
do
command
done
until循环
until condition
do
command
done
case语句
case 值 in
模式1)
command1
command2
...
commandN
;;
模式2)
command1
command2
...
commandN
;;
esac
TMOUT:在用户输入空闲一段时间后自动断开
#!/bin/bash
TMOUT=3
echo "What is your name?"
echo "You only have $TMOUT
seconds to answer!"
read name
if [ $? -eq 0 ]; then
echo "Your name is $name"
else
echo "Timed out!"
exit 1
fi
ssh中用空格分割变量
补充:
bash shell中无法存储布尔值只能用于条件判断
截取字符串命令:echo $str | awk -F ‘//’ {print $1},以//为分割符截取字符串str,取截取的第一部分