一。运行
soucre .当前进程执行脚本
sh bash在子进程执行脚本,完成后消失
转义符"\$6999"---->$6999还原本身的语意,
转义符'\$6999'---->\$6999本来的意思
头文件 #!/bin/bash
变量引用要加$
二。特殊符号
1.$() ``
执行命令,给出结果
举例 echo 当前的用户是`whoami`
输出 当前的结果是 root
举例 `whoami`
结果 报错
举例
linux@ubuntu:~$ `whoami`
Command 'linux' not found, did you mean:
command 'linex' from snap linex (0.1.6)
See 'snap info <snapname>' for additional versions.
举例
linux@ubuntu:~$ echo bianliangis `whoami`
bianliangis linux
2.${变量} 取出变量
3.() 开启子shell并执行命令
4.$变量 取出变量名称
举例
linux@ubuntu:~$ echo $name
111
linux@ubuntu:~$ echo ${name}
111
三。计算
1.双括号
linux@ubuntu:~$ name=3
linux@ubuntu:~$ $((name=name*3))
9: command not found
linux@ubuntu:~$ echo $((name=name*3))
27
脚本举例
sed 字符串替换
解释
- `echo $name`:输出变量`name`的值。
- `sed 's/[0-9]//g'`:使用sed命令进行字符串替换。这里的`sed`命令用于删除所有数字(`[0-9]`表示任何数字,`//`表示替换为空,即删除,`g`表示全局匹配,即删除所有数字)。
- `echo $name|sed 's/[0-9]//g'`:将变量`name`的值传递给sed命令处理,处理后的结果不包含任何数字。
- `-n`:是`test`命令的一个选项,用于检查字符串的长度是否非零。
- `if [ -n "`echo $name|sed 's/[0-9]//g'`" ]`:整个条件判断的意思是,如果变量`name`去除所有数字后的字符串长度非零(即`name`中至少包含一个非数字字符),则条件为真。
2.let 运算符
数值转义
linux@ubuntu:~$ num=5
linux@ubuntu:~$ let num=num+1
linux@ubuntu:~$ echo ${num}
6
四。nginx服务是否连接成功
脚本举例
#!/bin/bsah
Checkurl()
{
timeout()=5
fails=0
success=0
while true
do
wget --timeout=${timeout} --tries =1 http://baidu.cn/ -q -0 /dev/null
if[ $? -ne 0 ]
then
let fails=fails+1
else
let success+=1
fi
if [ ${success} -ge 1 ]
then
echo "great!!!"
exit 0
fi
if [ ${fails} -ge 2 ]
then
echo "bad!!!"
exit 1
fi
done
}
Checkurl
代码解释
-ne 不等于
-ge 大于等于
-le 小于等于
- `wget`:命令名称,表示用来执行网络文件下载。
- `--timeout=${timeout}`:这个选项设置wget在等待服务器响应时的超时时间,`${timeout}`是一个变量,需要在实际使用时替换成具体的数值,表示超时时间(以秒为单位)。
- `--tries=1`:这个选项设置wget在尝试下载时只尝试一次。如果下载失败,wget将不会再次尝试。
- `http://baidu.cn/`:这是wget要下载文件的URL地址,这里指定的是百度网站的网址。
- `-q`:这个选项表示“quiet”,告诉wget在操作时不要显示任何信息,即静默模式。
- `-O`:这个选项告诉wget将下载的文件重命名为后面的参数指定的文件名。
五。expr
计算器
linux@ubuntu:~/shell$ expr 5 \* 3
15
求长度
linux@ubuntu:~/shell$ expr length 123
3
逻辑判断
linux@ubuntu:~/shell$ expr 8 \> 9
0
模式匹配
:计算字符串的字符数量
.* 字符串重复执行可以自定义
linux@ubuntu:~/shell$ expr name ":" ".*"
4
linux@ubuntu:~/shell$ expr name ":" ".*p"
0
六。其他计数器
1.bc 交互式计算机界面小数计算也可以
linux@ubuntu:~/shell$ echo "5*5" | bc
25
举例 1+到1000的和
linux@ubuntu:~/shell$ echo {1..100} |tr " " "+"
1+2+3+4+5+6+7+8+9+10+11+12+13+14+15+16+17+18+19+20+21+22+23+24+25+26+27+28+29+30+31+32+33+34+35+36+37+38+39+40+41+42+43+44+45+46+47+48+49+50+51+52+53+54+55+56+57+58+59+60+61+62+63+64+65+66+67+68+69+70+71+72+73+74+75+76+77+78+79+80+81+82+83+84+85+86+87+88+89+90+91+92+93+94+95+96+97+98+99+100
linux@ubuntu:~/shell$ seq -s + "100"
1+2+3+4+5+6+7+8+9+10+11+12+13+14+15+16+17+18+19+20+21+22+23+24+25+26+27+28+29+30+31+32+33+34+35+36+37+38+39+40+41+42+43+44+45+46+47+48+49+50+51+52+53+54+55+56+57+58+59+60+61+62+63+64+65+66+67+68+69+70+71+72+73+74+75+76+77+78+79+80+81+82+83+84+85+86+87+88+89+90+91+92+93+94+95+96+97+98+99+100
解释 -s 指定分隔符为 "+"
2.awk
linux@ubuntu:~/shell$ echo "99 88" | awk '{print $1+$2}'
187