shell指令学习
一:基本指令
1.1 变量
设置局部变量
var=10
设置环境变量
export var=10
查看环境变量
env |grep var
删除环境变量
unset var
注:在定义变量时,不用使用‘.’
1.2 特殊字符
- 文件名代换(globbing)
用户匹配的字符成为通配符,如*,?,[]
*匹配0个或者多个任意字符
?匹配一个任意字符
[]
- 命令代换
定义变量
1:var=$(date)
2:var=date
echo $var----------------取值
${变量名},取变量的值
$(命令),取命令的执行结果 - 算数代换
$((变量名)),对变量执行算数运算
$[变量名]。对变量执行算数运算 - 转义字符
另外的转义(–)
创建 --abc文件
touch – --abc
rm – --abc
- 单引号
2shell脚本语言
- 条件测试
用test或者[ ] (需要用空格)
如果是真返回0,假的话1
var=10
test $var -gt 1
echo $? //上次结果输出的内容
[ $var -gt 1 ]
var=‘hello’
[ $var = ‘hello’ ]
echo $?
逻辑与或
-a 与&&
-o 或
- 分支
if
read :读取控制台输入的语句 - case/esac
eg:两个“;;”代表break
- for/do/done
类似于遍历
eg
for TEST inls
; 读取当前执行路径下的目录
- while/do/done
eg
- 位置参数和特殊变量
./test.sh aa bb cc dd
$0----./test.sh
$1-----aa
$2-----bb
$#-----4
一般的启动项为:
hcm_servie.sh start
其中start指的argc1
- 管道
ps -ef | grep mysql | mmm
- tree
一般:将输出的结果放在文件中
ps axu |grep bash > out
使用tree后,会在控制台有输出,且保存在文件中
有参数,设置为a时,不会覆盖之前的文件内容
ls -l | tree -a out.txt
- 文件重定向
date > out —读到out文件中
date >>out ----追加到out文件中
kill -9 5454 >out 2&1 标准出错输出到文件out中
cat < fun.sh >out
- 函数
没有返回值也没有参数列表
函数名(){
函数体
}
下面是传参的例子
结果:
- Shell脚本调试方法
./test.sh -n
./test.sh -v
sh -x ./test.sh
- 正则表达式
查文件、大小创建时间用find
字符类
**.**匹配任意一个字符 abc. abc2 abc3
egrep ’ [x-y]1’-------匹配