您的位置:首页 > 运维架构 > Shell

shell脚本编程基础篇——语法和应用

2016-08-10 16:19 543 查看
条件测试test 和[

条件测试中成功返回0,失败返回-1

可以比较两个数的大小,也可以用来比较字符串。

!,-a,-o,分别为非,与,或三个逻辑运算

两个数比较大小





字符串比较





文件存在与操作





判断文件是否存在





循环while for

1、for语句

for有两种写法:

第一种:for i in {a..z}





第二种:for ((i=0;i<100;i++))(与c语言类似)





2、while语句





函数

shell中的函数和c语言中的类似,只是没有返回值和参数列表,但不代表不能传参,我们通过在调用函数时后面加上参数来传参,在函数内部通过
$1.$2,$3
…来表示,函数中可以return返回,如果返回一个值,则代表函数的Exit Status,在函数调用后通过
$?
来访问。事实上,函数就像是一个迷你脚本。





case/esac语句

case语句相当于与c语言中的case/switch语句,只是写法不同,看下面这段代码就明白了两者的区别。





比较if/then/elif/else/fi

和c中的类似,只是写法有讲究,给个例子就懂了





有时候也会使用&&和||操作,&&相当于if…then,而||相当于if not….then。





上面只是两种判断的两种写法,等价但是却有区别。

位置参数和特殊变量

$0


相当于C语⾔言main函数的argv[0]

$1、$2...


这些称为位置参数(Positional Parameter),相当于C语⾔言main函数 的argv[1]、argv[2]…

$#


相当于C语⾔言main函数的argc - 1,注意这⾥里的#后⾯面不表⽰
$@
参数列表
"$1" "$2"
…,例如可以⽤用在for循环中的in后⾯面。

$?


上⼀一条命令的Exit Status

$$


当前Shell的进程号

位置参数可以⽤用shift命令左移。⽐比如shift 3表⽰示原来的$4现在变成
$1
,原来的
$5
现在变成
$2


等,原来的
$1、$2、$3
丢弃,
$0
不移动。不带参数的shift命令相当于shift 1。





shell下一个简单的进度条





shell下求数组最大,最小,平均值(保存两位小数)



内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  shell语法