创建Shell脚本
打开文本编辑器(可以使用 vi/vim 命令来创建文件),新建一个文件 test.sh,扩展名为 sh(sh代表shell),扩展名并不影响脚本执行,见名知意就好,如果你用 php 写 shell 脚本,扩展名就用 php 好了。
输入一些代码,第一行一般是这样:
#!/bin/bashecho \"Hello World\"
#! 是一个约定的标记,它告诉系统这个脚本需要什么解释器来执行,即使用哪一种 Shell。echo 命令用于向窗口输出文本。
执行的方法一般有两种,但前提需要具备此脚本的执行权限
chmod +x xxx.sh
sh xxx.sh #常用方法1./xxx.sh #常用方法2
变量
Shell定义变量时,变量名不加美元符号
$
。
使用一个定义过的变量,只要在变量名前面加美元符号
$
即可,如:
your_name=\"qinjx\"echo $your_nameecho ${your_name}
变量名外面的花括号是可选的,加不加都行,加花括号是为了帮助解释器识别变量的边界,建议加上。
for循环
seq方式
for i in `seq 1 100` #注意,不是单引号doecho $idone
类C方式
for ((i=1; i<=100; i++))doecho $idone
类Python方式
for i in {1..100}doecho $idone
例如
for aa in seq `1 10000`;doecho\"====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 ] #不要省略空格,很重要thencommand1command2...commandNfi
if conditionthencommand1command2...commandNelsecommandfi
函数
1、可以带function fun() 定义,也可以直接fun() 定义,不带任何参数。
2、参数返回,可以显示加:return 返回,如果不加,将以最后一条命令运行结果,作为返回值。 return后跟数值n(0-255
funWithReturn(){echo \"这个函数会对输入的两个数字进行相加运算...\"echo \"输入第一个数字: \"read aNumecho \"输入第二个数字: \"read anotherNumecho \"两个数字分别为 $aNum 和 $anotherNum !\"return $(($aNum+$anotherNum))}funWithReturnecho \"输入的两个数字之和为 $? !\"
可以利用$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。 |