获取输入参数个数
如果脚本需要入参,那么一开始一般会对参数做一个简单校验。$#
即是入参个数
shell脚本获取目录下所有文件
1 | for file in `ls | grep -E '*.jar|*.war'` |
ls
之后使用通道
和grep
命令可以使用正则过滤出所需要文件
对文件名处理
假如一个文件名 test.jar 如何获取 test
以及 jar
这两部分?
1 | file="test.jar" |
只需要以.
为分隔符。prefix就是删掉最左边一个.
右边所有的。
${file%%.*}中 %%意思是 从右边数,最后一个遇到.
,然后删除所有.
右边的
同样 # 表示从左边算起,但是一个#表示,从左边算起的第一个,并且删除左边的内容。也就得到了后缀
这样总结下来,# 从左边, %从右边,单个表示第一个,两个表示最后一个,中间为分隔符,*在那边,那边就删除
获取其他shell文件的退出值
有时,我们需要调用之前写好的shell文件,如何获取shell文件的exit值呢?
exit值会存储在#?
中,我们直接执行shell文件之后,取这个值即可
1 | ./test.sh 1111 |
expect 命令 实现ssh登录
1 | spawn ssh xx@xxxxxxxx |
expect 脚本获取 入参
1 |
|
expect 根据输出值判断
1 | expect { |