shell脚本中接收用户参数和判断用户参数
Posted wx6102046ba7f02
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了shell脚本中接收用户参数和判断用户参数相关的知识,希望对你有一定的参考价值。
shell脚本的格式为:
脚本声明
脚本注释
脚本命令
如:
[root@linuxprobe~]# vim example.sh
#!/bin/bash
#For Example BY linuxprobe.com
pwd
ls -al
上面是一个简单的shell脚本,但是纯命令的堆砌没有实用性,实际工作中都需要接收用户的参数来处理;事实上,Linux系统中的shell脚本语言早就考虑到这些了,已经内设了接收参数的变量,变量之间使用空格间隔,如:
$0表示当前shell脚本程序的名称
$#表示总共有多少个参数
$*表示所有位置上具体有哪些参数
$?表示上一次命令执行的返回值
$1、$2、$3……表示分别对应第N个位置的参数值
Linux中判断用户参数可以使用条件测试语法,若条件成立则返回数字0,否则返回非零值。如下图:
注意,中括号中间的条件表达式的两边都要有一个空格,否则会执行出错。
按测试对象划分,条件测试语句可分为4种:
1、文件测试语句
2、逻辑测试语句
3、整数值比较语句
4、字符串比较语句
(1)文件测试即使用指定条件判断文件是否存在或权限是否满足等情况的运算符,具体有如下表:
运算符 | 作用 |
-d | 测试文件是否为目录类型 |
-e | 测试文件是否存在 |
-f | 判断是否为一般文件 |
-r | 测试当前用户是否有权限读取 |
-w | 测试当前用户是否有权写入 |
-x | 测试当前用户是否有权限执行 |
例如,判断/etc/fstab是否为一个目录文件,并通过$?变量显示上一条命令的执行返回值,如果返回值为0,表示目录存在,否则不存在或不是一个目录:
[root@linuxprobe~]# [ -d /etc/fstab ]
[root@linuxprobe~]# echo $?
1
上面的测试可以用一行命令来写吗?答案是可以的;这时可以用到逻辑运算符。
(2)有如下3种逻辑运算符:
&&是逻辑与,只有前面语句执行成功,才会执行后面的语句
||是逻辑或,只有前面语句执行失败,才会执行后面的语句
!是逻辑非,对逻辑测试结果取反值,正确变为错误,错误变为正确
例如判断当前登录用户是否为root,如果不是则输出user,否则输出root:
[root@linuxprobe~]# [ ! $USER = root ] && echo "user" || echo "root"
root
(3)整数比较运算符仅是对数字的操作,可用的整数比较运算符如下:
运算符 | 作用 |
-eq | 是否等于 |
-ne | 是否不等于 |
-gt | 是否大于 |
-lt | 是否小于 |
-le | 是否小于等于 |
-ge | 是否大于等于 |
如测试10是否大于10以及10是否等于10:
[root@linuxprobe~]# [ 10 -gt 10 ]
[root@linuxprobe~]# echo $?
1
[root@linuxprobe~]# [ 10 -eq 10 ]
[root@linuxprobe~]# echo $?
0
(4)字符串比较语句用于判断测试字符串是否为空值,或是否相同,常见的字符串比较运算符如下:
运算符 | 作用 |
= | 比较字符串内容是否相同 |
!= | 比较字符串内容是否不同 |
-z | 判断字符串内容是否为空 |
如判断String变量是否为空:
[root@linuxprobe~]# [ -z $String ]
[root@linuxprobe~]# echo $?
0
以上接收用户参数和判断用户参数的内容大概这么多,可以多练习一下
以上是关于shell脚本中接收用户参数和判断用户参数的主要内容,如果未能解决你的问题,请参考以下文章