我需要检查输入参数的存在。 我有以下脚本

if [ "$1" -gt "-1" ]then echo hi
fi

我懂了

[: : integer expression expected

如何首先检查输入参数1是否存在?


#1楼

检测参数是否传递给脚本的另一种方法:

((!$#)) && echo No arguments supplied!

注意(( expr ))使表达式根据Shell Arithmetic的规则求值。

为了在没有任何参数的情况下退出,可以说:

((!$#)) && echo No arguments supplied! && exit 1

上面的另一种(类似)表达方式是:

let $# || echo No arguments suppliedlet $# || { echo No arguments supplied; exit 1; }  # Exit if no arguments!

help let说:

let: let arg [arg ...]

  Evaluate arithmetic expressions. ... Exit Status: If the last ARG evaluates to 0, let returns 1; let returns 0 otherwise. 

#2楼

尝试:

 #!/bin/bashif [ "$#" -eq  "0" ]thenecho "No arguments supplied"elseecho "Hello world"fi

#3楼

提醒一下,Bash中的数字测试运算符仅适用于整数( -eq-lt-ge等)

我想确保我的$ vars是整数

var=$(( var + 0 ))

在测试它们之前,只是为了防止出现[[:必需的整数arg]错误。


#4楼

最好以这种方式进行演示

if [[ $# -eq 0 ]] ; thenecho 'some message'exit 1
fi

如果参数太少,通常需要退出。


#5楼

在某些情况下,您需要检查用户是否向脚本传递了参数,如果没有,则返回默认值。 就像下面的脚本一样:

scale=${2:-1}
emulator @$1 -scale $scale

在这里,如果用户尚未将scale作为第二个参数传递,则默认情况下,我使用-scale 1启动Android模拟器。 ${varname:-word}是扩展运算符。 还有其他扩展运算符:

  • ${varname:=word} 设置未定义的varname而不返回word值;
  • ${varname:?message} ,如果已定义,则返回varname ,但不为null;或者打印message并中止脚本(如第一个示例);
  • ${varname:+word}仅在定义了varname且不为null时返回word ; 否则返回null。

#6楼

如果要检查参数是否存在,可以检查参数#是否大于或等于目标参数编号。

以下脚本演示了它是如何工作的

test.sh

#!/usr/bin/env bashif [ $# -ge 3 ]
thenecho script has at least 3 arguments
fi

产生以下输出

$ ./test.sh
~
$ ./test.sh 1
~
$ ./test.sh 1 2
~
$ ./test.sh 1 2 3
script has at least 3 arguments
$ ./test.sh 1 2 3 4
script has at least 3 arguments

#7楼

我经常将此代码段用于简单的脚本:

#!/bin/bashif [ -z "$1" ]; thenecho -e "\nPlease call '$0 <argument>' to run this command!\n"exit 1
fi

#8楼

只是因为有更多要指出的要点,我要补充一点,您可以简单地测试您的字符串是否为空:

if [ "$1" ]; thenecho yes
elseecho no
fi

同样,如果您期望arg计数,只需测试您的最后一个:

if [ "$3" ]; thenecho has args correct or not
elseecho fixme
fi

等等与任何arg或var


#9楼

它是:

if [ $# -eq 0 ]thenecho "No arguments supplied"
fi

$#变量将告诉您脚本传递的输入参数的数量。

或者您可以检查参数是否为空字符串,例如:

if [ -z "$1" ]thenecho "No argument supplied"
fi

-z开关将测试“ $ 1”的扩展名是否为空字符串。 如果为空字符串,则执行主体。

检查Bash Shell脚本中输入参数的存在相关推荐

  1. linux判断参数是否存在,检查bash shell脚本中是否存在输入参数

    我需要检查输入参数的存在性.我有下面的剧本 if ["$1" -gt"-1" ] then echo hi fi 我得到 [: : integer expres ...

  2. Linux shell 对话框,如何在 Bash Shell 脚本中显示对话框

    原标题:如何在 Bash Shell 脚本中显示对话框 这个教程给出几个如何使用类似zenity和whiptail的工具在Bash Shell 脚本中提供消息/对话框的例子.使用这些工具,你的脚本能够 ...

  3. 向shell脚本中传入参数

    写一个 程序名为    test.sh    可带参数为 start 和 stop 执行  test.sh start 执行  start 内容的代码 执行 test.sh stop 执行 stop ...

  4. html中显示shell脚本的输出,网页从shell脚本中输入并显示结果

    首先,不是在BASH脚本中使用$USERNAME. $USERNAME是一个包含当前用户名的BASH变量.实际上,在BASH中使用UPPERCASE变量通常是一个糟糕的主意.大多数BASH环境变量都是 ...

  5. shell脚本判断输入参数个数

    if [ $# != 1 ] then   echo "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"   echo "!!         ...

  6. linux shell脚本 传参,在bash shell脚本中传播所有参数

    我知道这个问题已经得到很好的回答,但这是" $ @" $ @" $ *"和$ *之间的比较 测试脚本的内容: # cat ./test.sh #!/usr/bi ...

  7. linux脚本获取日期格式,关于shell脚本中的bash:yyyy-mm-dd格式日期

    我尝试在bash shell脚本中使用$(date),但是我希望日期采用YYYY-MM-DD格式.我怎么得到这个? 在巴什: 从date获取年-月日 DATE=`date +%Y-%m-%d` GET ...

  8. shell脚本传可选参数 getopts 和 getopt的方法

    写了一个shell脚本,需要向shell脚本中传参数供脚本使用,达到的效果是传的参数可以是可选参数 下面是一个常规化的shell脚本: echo "执行的文件名为: $0";ech ...

  9. 【shell】shell脚本读取给定参数|参数个数

    目录 实例脚本 脚本 使用方法 数组获取参数 字符截取方法 解决类型 汇总 实例脚本 参数 $1, $2,..., $N代表了命令行的第1.2--N个参数,$0代表了本脚本的名字,$#代码参数个数,@ ...

最新文章

  1. Android SDK安装找不到JDK
  2. 产品网络推广方案浅谈网站的相关性对优化的影响!
  3. nginx 同一个IP上配置多个HTTPS主机
  4. Python对数列进行全排列
  5. linux文本处理常用指令总结
  6. 手把手0基础项目实战(一)——教你搭建一套可自动化构建的微服务框架(SpringBoot+Dubbo+Docker+Jenkins)...
  7. pip升级python包命令_python安装扩展库常用的是什么工具
  8. Android学习笔记---Android平台1.使用dom解析xml文件
  9. 《『若水新闻』客户端开发教程》——14.代码编写(6)
  10. 如何打造基于 markdown 的论文工作流程(一)
  11. 搜索引擎背后的经典数据结构和算法
  12. html中div hover的用法,CSS: hover选择器的使用详解
  13. python矩阵对角化_大矩阵对角化python
  14. Laravel填充数据Seeder出现 Target class [xxx] does not exist 错误
  15. (2022)安卓和苹果应用注册上架概述
  16. Android8.1 framework 微信付款码显示不出来
  17. 店铺管理系统是智商税还是真有用?我们替你实测了最火的五个软件!市面上最火的五款店铺管理系统大测评!
  18. redis和zk实现分布式锁的优缺点
  19. php活体检测,人脸门禁系统中活体检测的必要性
  20. 从字符串中筛选出连续的数字,并将其放入另一个数组!

热门文章

  1. 算法---------二叉树的后序遍历
  2. linux添加磁盘后进入grub,从硬盘安装 Linux 和从 GRUB 命令行启动操作系统
  3. linux内核自解压,Linux的初始内核自解压分析
  4. Java学习笔记28
  5. syscall 系统调用陷入_trusty系统调用
  6. ES6基础之——对比两个值是否相等Object.is()
  7. Java编程之前的复习和练习
  8. MapRdeuceYarn的工作机制(YarnChild是什么)
  9. js 日历插件开发
  10. win7 64 安装scikit-learn