shell脚本(三)
声明!
学习视频来自B站up主 泷羽sec 有兴趣的师傅可以关注一下,如涉及侵权马上删除文章,笔记只是方便各位师傅的学习和探讨,文章所提到的网站以及内容,只做学习交流,其他均与本人以及泷羽sec团队无关,切勿触碰法律底线,否则后果自负!!!!有兴趣的小伙伴可以点击下面连接进入b站主页B站泷羽sec
脚本参数传递与数学运算
echo 执行文件名是:
$0
echo 第一个参数是:$1
echo 传递的参数作为一个字符串显示:$*
echo 传递的参数独立作为每一个字符串显示:$@
echo 传递到脚本的参数个数是:$#
echo 最后命令的退出状态:$?
echo 脚本运行的当前进程ID是:$$
可以向脚本程序传递一个或者多个参数,脚本中的$1,里面的数字是可以依次递增的,比如`$!,$2,$3`等等,其中$0(比较特殊表示文件名称)
那么好 我们利用vim写入脚本9.sh,再利用sh 9.sh执行文件,我们看看执行结果
执行文件名是: 9.sh
第一个参数是:
传递的参数作为一个字符串显示:
传递的参数独立作为每一个字符串显示:
传递到脚本的参数个数是: 0
最后命令的退出状态: 0
脚本运行的当前进程ID是: 4958
上面显示第一个参数为空,因为我们没有给它指定任何一个参数,我们给他指定一个参数name,9.sh name
执行文件名是: 9.sh
第一个参数是: name
传递的参数作为一个字符串显示: name
传递的参数独立作为每一个字符串显示: name
传递到脚本的参数个数是: 1
最后命令的退出状态: 0
脚本运行的当前进程ID是: 7132
然后第一个参数就为name
那么假设我们加入第二个,第三个参数,修改脚本
vim 9.sh echo
指定参数名为 sh 9.sh 1 2 3
执行文件名是: 9.sh
第一个参数是: 1
第二个参数是: 2
第三个参数是: 3
传递的参数作为一个字符串显示: 1 2 3
传递的参数独立作为每一个字符串显示: 1 2 3
传递到脚本的参数个数是: 3
最后命令的退出状态: 0
脚本运行的当前进程ID是:11875
由此得出 参数传递一般为$n
(n表示数字 可递增),$*
就是将参数当作统一的字符串显示出来,而$@
是将每个字符串当作独立的字符串显示 这也是$*
和 $@
的区别,$#
代表参数的个数,$?
是查看命令执行状态的 如果显示为0 那么命令就是正常执行的,其他数字就是出错了,$$
就是查看脚本当前进程id的
shell编程中进行数学运算
shell编程在数学运算的时候是相当麻烦的,python中的数学运算可能很简单,在shell编程中 利用expr进行运算
expr 5+10
回显 5+10 那么该怎么运算是 expr 5 + 10
这样写注意中间有空格 5(空格) +(空格)10
这仅仅适用于加减法,用于乘法就会报错
expr 6 \* 6
(乘法是用* python直接*就行了 要用\进行转义)
那么除法就用两种方法 一种是/取整 %取余数
expr 6 / 3\
expr 6 % 4
混合运算
expr 5 + 6 \* 7
(shell会按照先乘除后加减运算)
expr ( 5 + 7 ) / 2
(如果有括号这样直接运算也会报错,括号也要进行转义)
expr \( 5 + 7 \) / 2
运算变量结合
name='expr 5 + 6'
echo $name