创建Shell脚本
打开文本编辑器(可以使用 vi/vim 命令来创建文件),新建一个文件 test.sh,扩展名为 sh(sh代表shell),扩展名并不影响脚本执行,见名知意就好,如果你用 php 写 shell 脚本,扩展名就用 php 好了。
输入一些代码,第一行一般是这样:
#!/bin/bash
echo "Hello World"
#! 是一个约定的标记,它告诉系统这个脚本需要什么解释器来执行,即使用哪一种 Shell。echo 命令用于向窗口输出文本。
执行的方法一般有两种,但前提需要具备此脚本的执行权限
chmod +x xxx.sh
sh xxx.sh #常用方法1
./xxx.sh #常用方法2
变量
Shell定义变量时,变量名不加美元符号$
。
使用一个定义过的变量,只要在变量名前面加美元符号$
即可,如:
your_name="qinjx"
echo $your_name
echo ${your_name}
变量名外面的花括号是可选的,加不加都行,加花括号是为了帮助解释器识别变量的边界,建议加上。
for循环
seq方式
for i in `seq 1 100` #注意,不是单引号
do
echo $i
done
类C方式
for ((i=1; i<=100; i++))
do
echo $i
done
类Python方式
for i in {1..100}
do
echo $i
done
例如
for aa in seq `1 10000`;do
echo"====START $aa Times======"
...各种函数
echo"====END $aa Times======"
done
ping
不管在windows平台,还是在linux平台,ping都是非常常用的网络命令;ping命令通过ICMP(Internet控制消息协议)工作;ping可以用来测试本机与目标主机是否联通、联通速度如何、稳定性如何。
ping命令运行在命令提示符终端,用法为:“ping 参数 目标主机”。其中参数为零到多个,目标主机可以是IP或者域名。
参数 | 解释 |
---|---|
-c | ping指定次数后停止ping; |
-W | 以毫秒为单位设置ping的超时时间;例如ping -W 5 www.baidu.com,意思就是只ping5秒,5秒后命令结束。 |
-f | 极限检测,快速连续ping一台主机,ping的速度达到100次每秒; |
流程控制
if语句
在sh/bash里,如果else分支没有语句执行,就不要写这个else。
if [ $val1 -eq $val2 ] #不要省略空格,很重要
then
command1
command2
...
commandN
fi
if condition
then
command1
command2
...
commandN
else
command
fi
函数
1、可以带function fun() 定义,也可以直接fun() 定义,不带任何参数。
2、参数返回,可以显示加:return 返回,如果不加,将以最后一条命令运行结果,作为返回值。 return后跟数值n(0-255
funWithReturn(){
echo "这个函数会对输入的两个数字进行相加运算..."
echo "输入第一个数字: "
read aNum
echo "输入第二个数字: "
read anotherNum
echo "两个数字分别为 $aNum 和 $anotherNum !"
return $(($aNum+$anotherNum))
}
funWithReturn
echo "输入的两个数字之和为 $? !"
可以利用$n来获取参数的值,例如,$1表示第一个参数,$2表示第二个参数…
funWithParam(){
echo "第一个参数为 $1 !"
echo "第二个参数为 $2 !"
echo "第十个参数为 $10 !"
echo "第十个参数为 ${10} !"
echo "第十一个参数为 ${11} !"
echo "参数总数有 $# 个!"
echo "作为一个字符串输出所有参数 $* !"
}
funWithParam 1 2 3 4 5 6 7 8 9 34 73
基本运算符
字符串运算符 | 说明 |
---|---|
= | 检测两个字符串是否相等,相等返回 true。[ $a = $b ] 返回 false。 |
!= | 检测两个字符串是否相等,不相等返回 true。 |
关系运算符 | 说明 |
---|---|
-eq | 检测两个数是否相等,相等返回 true。[ $a -eq $b ] 返回 false。 |
-ne | 检测两个数是否不相等,不相等返回 true。 |
-gt | 检测左边的数是否大于右边的,如果是,则返回 true。 |
-lt | 检测左边的数是否小于右边的,如果是,则返回 true。 |
-ge | 检测左边的数是否大于等于右边的,如果是,则返回 true。 |
-le | 检测左边的数是否小于等于右边的,如果是,则返回 true。 |