shell参数判断

对于只判断一个参数的

#!/bin/bash

if [ ! -n "$1" ] ;then
    echo "you have not input a agrs!"
else
    echo "the args you input is $1"

fi

或者

在shell中$1变量表示脚本的第一个参数。所以如果判断$1参数是空值,即可表示脚本没有参数。示例代码如下:

if [ "$1" ];then

    echo "带参数";

else

    echo "没有带参数 "

fi

上面的代码其实和使用if结构的-z参数是一样的,都是用于检测字符串是符不空值。因此也可以换成使用-z参数来判断。示例代码如下 :

if [ -z "$1" ];then

    echo "没有带参数";

else

    echo "带参数"

fi


多个参数的:

shell中默认$#变量说明脚本参数的个数,如果这个值是0表示脚本没有带参数,如果大于0,则表示带有参数。

if [ $# == 0 ];then

    echo "没有带参数";

else

    echo "带了$#个参数"

fi


shell脚本中,判断参数有多种方法,以下为你详细介绍: ### 检查参数是否为空 可以使用`-z`测试操作符来检查参数是否为空。例如,检查传递给脚本的第二个参数是否为空: ```bash if [ -z "$2" ]; then zone="public" else zone="$2" fi echo "The zone is set to: $zone" ``` 在上述代码中,`-z`操作符用于检查`$2`(脚本的第二个参数)的长度是否为零。如果为空,则将`zone`变量设置为`"public"`;否则,将`zone`设置为`$2`的值[^1]。 ### 条件判断的不同格式 - **`test`命令**:使用`test`命令加上条件表达式进行判断。例如,判断文件是否存在: ```bash test -e file if test -e file; then echo "文件存在" fi ``` - **单中括号`[ ]`**:这是一种常用的条件判断格式,两边必须有空格。例如,判断目录是否存在: ```bash [ -d /shell/dir1 ] if [ -d /shell/dir1 ]; then echo "目录存在" fi ``` - **双中括号`[[ ]]`**:功能与单中括号类似,但支持正则匹配(`=~`)。例如: ```bash str="hello" if [[ $str =~ ^h ]]; then echo "字符串以 h 开头" fi ``` ### 判断文件类型和权限 可以使用不同的参数判断文件的类型和权限: #### 判断文件类型 - `-e`:判断文件是否存在(任何类型文件)。 - `-f`:判断文件是否存在并且是一个普通文件。 - `-d`:判断文件是否存在并且是一个目录。 - `-L`:判断文件是否存在并且是一个软连接文件。 - `-b`:判断文件是否存在并且是一个块设备文件。 - `-S`:判断文件是否存在并且是一个套接字文件。 - `-c`:判断文件是否存在并且是一个字符设备文件。 - `-p`:判断文件是否存在并且是一个命名管道文件。 - `-s`:判断文件是否存在并且是一个非空文件(有内容)。 示例代码: ```bash # 判断目录是否存在,存在则输出信息,不存在则创建 if [ -d zhu ]; then echo '存在' else mkdir zhu fi # 判断文件是否非空 if [ -s free.sh ]; then echo '非空' else echo "空" fi ``` #### 判断文件权限 - `-r`:当前用户对其是否可读。 - `-w`:当前用户对其是否可写。 - `-x`:当前用户对其是否可执行。 - `-u`:是否有suid,高级权限冒险位。 - `-g`:是否sgid,高级权限强制位。 - `-k`:是否有t位,高级权限粘滞位。 示例代码: ```bash # 判断文件是否可读 if [ -r file.txt ]; then echo "文件可读" fi ```
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值