shell
#!/bin/bash表示脚本的解释器(即用什么命令执行,也可以是python啥的),如果没有的话,不能直接执行shell脚本
在写脚本时,有一些好习惯:注释文件的作用,作者,日期,source加载profile
- 变量
(1)变量赋值,前后都不能有空
(2)变量的使用:需要加上$
(3)把ls -l执行的结果赋给变量a(使用反引号)
(4)常用变量
$?用于判断上一个执行的命令是否执行成功(成功为0) - 传参
$1表示第一个位置
用单引号引起来,就是一个参数了 - if和else语法
If和fi只是表示开头和结尾,方括号才表示判断,而且方括号里面的空格不能少,只要有方括号就必须有then
对整型做判断,两边都不写引号:
对字符串做判断,需要加引号:== >= <= > <
前面加上x_表示极端情况下不报错(例如变量为空)
文件的判断:-e(文件名或者目录名是否存在) -f(是否是文件并且存在)-d(是否是目录并且存在) 存在则返回0
变量的判断:-n(字符串不为空返回0) -z(字符串为空返回0)
其他的if写法(这样写比较简洁)
&&:与要求前后都为真,如果与的前面为假,当前命令直接就不执行了
||:或要求两边只有一个为真
也可以在命令行里面执行
- for循环
也可以放在命令行里面执行 - break或者continue
注意|传的是前面所有命令执行的内容
执行continue就退出当前循环,继续下一次的循环;break所有的循环都终止 - while循环
判断都是方括号
死循环,ctrl+c强制退出
while read line,line是一个变量
管道符的方式会产生子进程
下面这种方式不产生子进程 - read交互
Read 变量:从键盘敲入的hi被捕获
-s参数:进行输入的时候,不会显示出来
Read -s 变量 - Selsect交互,固定的交互:PS3(进行选择)