Linux Shell脚本参数传递与条件判断的方法

2023-05-16

参考链接:https://www.runoob.com/linux/linux-shell.html

 

参数传递

Shell脚本中参数用$来表示,如

$1 -- 第一个参数

$2 -- 第二个参数

...,以此类推,比如test.sh arg1 arg2命令,那么$1就是arg1,$2就是arg2

$# -- 参数个数

变量赋值

直接用语句

arg=value

就可以设置变量和变量的值,arg为变量名,value为变量的值,变量引用时用$arg,注意操作符“=”旁边没有空格,也可以

arg=$1

表示$arg等于第一个参数$1

条件判断

条件判断用if--fi语句,if表示条件判断,fi表示条件判断程序的结束,比如

if [ $# -ge 1 ] && [ $1 -eq 0 ]; then

    echo "arg number: $#"

    echo "arg1: $1"

fi

[ ]之间为判断语句,逻辑关系,需要注意的是,[, ], 以及变量、运算符旁边要留出空格,不然会被认定为shell脚本语法出错

-eq -- 等于

-ne -- 不等于

-gt -- 大于

-ge -- 大于等于

-lt -- 小于

-le -- 小于等于

可以在逻辑语句之间用!, -o, -a来表示语句之间的运算,如

[ ! $arg -eq 0 ] -- $arg不等于0

[ $arg1 -eq 0 -a $arg2 -eq 2 ] -- $arg1等于0并且$arg2等于2,等等

[ ]之间的逻辑运算

&& -- 逻辑与

|| -- 逻辑或

比如[ condition1 ] && [ condition2 ],作用效果应该与前面的-o,-a相同

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Linux Shell脚本参数传递与条件判断的方法 的相关文章

  • 通过 SSH 将变量传递给远程脚本

    我正在通过 SSH 从本地服务器在远程服务器上运行脚本 首先使用 SCP 复制该脚本 然后在传递一些参数时调用该脚本 如下所示 scp path to script server example org another path ssh s
  • 如何在bash中仅提取两个字符串之间多行的第一个实例?

    我的文件是 abc 123 xyz abc 675 xyz 我想提取 abc 123 xyz 123 可以是任何东西 重点是我想要第一次出现 我尝试使用这个 sed n abc xyz p filename 但这给了我所有的例子 我怎样才能
  • 从 bash 脚本运行节点

    很简单 我正在尝试使用 cron 自动运行 nodejs 脚本 但是脚本本身似乎无法运行该文件 我的脚本很简单 usr bin env node node var node assets js update js 但是 在运行此命令时 它返
  • sqlite 插入需要很长时间

    我正在将不到 200 000 行插入到 sqlite 数据库表中 我只是在终端中通过 sqlite3 使用一个非常简单的 sql 文件 我打赌它已经运行了至少 30 分钟 这是正常现象还是我应该关闭该过程并尝试不同的方法 sqlite中的插
  • shell脚本“x$VARIABLE”中x的用途[重复]

    这个问题在这里已经有答案了 我正在查看一些 shell 脚本 comarison shcu 中 x 的用途是什么 if x USER x RUN AS USER then su RUN AS USER c CATALINA HOME bin
  • 是否有可能在linux中找到包含特定文本的文件?

    考虑这种情况 我在文件夹 Example 下有很多文件 如果我需要找到一个包含特定短语 如 Class Example 的文件 我该如何使用 Linux shell 来做到这一点 linux中有类似 定位 的函数可以做到这一点吗 Thank
  • linux下如何获取昨天和前天?

    我想在变量中获取 sysdate 1 和 sysdate 2 并回显它 我正在使用下面的查询 它将今天的日期作为输出 bin bash tm date Y d m echo tm 如何获取昨天和前天的日期 这是另一种方法 对于昨天来说 da
  • Gradle 1.3:build.gradle 不构建类

    这里有一个新问题 我有一个 build gradle 文件apply plugin java在其中 并与 java 项目 包关联 当我跑步时gradle build从命令行我得到 compileJava UP TO DATE process
  • Bash 脚本 - 迭代 find 的输出

    我有一个 bash 脚本 其中需要迭代 find 命令输出的每一行 但似乎我正在迭代 find 命令中的每个单词 以空格分隔 到目前为止我的脚本看起来像这样 folders find maxdepth 1 type d for i in f
  • 如何从类似于 eclipse 的命令行创建可运行的 jar 文件

    我知道 eclipse 会生成一个可运行的 jar 文件 其中提取并包含在该 jar 文件中的所有库 jar 文件 从命令提示符手动创建 jar 文件时如何执行类似的操作 我需要将所有 lib jar 解压到类文件夹中吗 目前我正在使用 j
  • touch命令在一个目录下创建多个文件(不同名称)

    我想制作一个在 bash 中创建目录和文件结构的脚本 我尝试过这样的事情 mkdir p 1 2 touch 1 2 a b c a b c 应该是在一个命令或其他命令中创建的文件 但由于某种原因 结构是这样的 current folder
  • 将数组传递给函数名称冲突

    Specs GNU bash 版本 3 1 17 无法升级 Premise 我一直在摆弄数组 我想知道是否有任何方法可以让函数的本地变量与所述函数外部的数组同名 Example 在下面的示例中 我将尝试显示该问题 Working bin b
  • 如何成功使用RDAP协议代替whois

    我对新的 RDAP 协议有点困惑 也不知道何时进一步追求它有意义 在我看来 每个人都同意它是 whois 的继承者 但他们的数据库似乎是空的 在 ubuntu 上我尝试了 rdapper nicinfo 甚至他们的 RESTful API
  • 操作系统什么时候清除进程的内存

    进程在某些操作系统上成功或异常终止 操作系统何时决定擦除分配给该进程的内存 数据 代码等 在退出时或当它想为新进程分配内存时 这个清除内存分配过程在所有操作系统 winXP Win7 linux Mac 上都相同吗 据我了解 页表具有该进程
  • 怎样才能使 Windows 成为一个开箱即用的 POSIX 兼容操作系统?

    这个问题的动机是我的一个牵强的梦想 即 nix 平台上可用的许多优秀软件可以轻松移植到 Windows 微软最近对开源和开放性采取了不同的方法 所以我真的很想知道如果微软有这样的倾向 这样的事情会有多可行 我很好奇的一些更具体的事情是 是否
  • 如何使用AWK脚本检查表的所有列数据类型? [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 在这里 我正在检查表中第一列的数据类型 但我想知道AWK中表的所有列数据类型 我尝试过 但只能获得一列数据类型 例如 Column 1
  • 如何在我的 AWS EC2 实例上安装特定字体?

    我有一个在 AWS EC2 Amazon Linux Elastic Beanstalk 实例上运行的 Python 应用程序 该实例需要某些特定字体才能生成输出 并且想知道如何在部署或实例启动过程中安装它们 我的代码在本地计算机 OS X
  • InstaPy:“错误,无法确定 64 位 Linux 的正确文件名”

    有人知道如何解决或解决这个问题吗 来自控制台的堆栈跟踪 执行后报告错误 InstaPy Version 0 6 9 Workspace in use home zanettra InstaPy Error unable to determi
  • 为什么减法返回 - 符号

    我对简单的减法有疑问 但我不明白出了什么问题 我的代码 start date s N cut b1 13 Treatment end date s N cut b1 13 delta expr end start echo delta de
  • 伊迪德信息

    重新定义问题 有什么方法可以获取所连接显示器的序列号吗 我想收集显示器的Eid信息 当我使用 logverbose 选项运行 X 时 我可以从 xorg 0 log 文件中获取它 但问题是 如果我切换显示器 拔出当前显示器 然后插入另一个显

随机推荐

  • 看过J2EE视频,你是否也有雨过地皮湿的感觉

    软考过后开始了J2EE的学习 xff0c 初认识J2EE视频感觉不是很好 xff0c 有种雨过地皮湿的感觉 xff0c 还需要通过后续的学习来加强巩固 至今已接触的JAVA方向的J2SE 和J2EE xff0c 下面简单对JAVA方面的技术
  • springboot自动配置原理以及spring.factories文件的作用详解

    一 springboot 自动配置原理 先说说我们自己的应用程序中Bean加入容器的办法 xff1a bean加入容器 我们在应用程序的入口设置了 64 SpringBootApplication标签 xff0c 默认情况下他会扫描所有次级
  • 无人机传感器信号滤波器设计

    由于无人机在飞行过程中受到电机桨叶转动的引起的振动影响 xff0c 从陀螺仪 加速度计等传感器出来的数据需要进行滤波 xff0c 一般是通过低通滤波 xff0c 结合电机的频率特性 xff0c 通常30Hz左右是比较合适的阈值 Matlab
  • TCP网络数据包的组成部分,数据包分片与重组功能

    一个网络数据包包括哪些有了解吗 xff1f 网络数据包一般包括头部和数据部分 xff0c 在TCP协议中 xff0c 要发送的数据经过TCP模块添加TCP头部 xff1b 然后IP模块添加IP头部和MAC头部 xff1b 然后在最前面加上报
  • 无人飞行器数学模型

    这里是运动学和动力学模型 xff0c 也适用于任何其它类型的飞行器 xff0c 乃至无人车等各种载体 飞行器的状态包括位置 xff0c 速度 xff0c 姿态角度 xff0c 角速度 xff0c 姿态也可以用坐标转换矩阵来表示 xff0c
  • 无人飞行器的控制

    飞行器的控制通过几个环来实现 xff0c 外环控制为位置的控制 xff0c 内环控制为姿态的控制 xff0c 通过姿态的控制来实现飞行器的动态控制 xff0c 从而控制飞行器的速度和位置 xff0c 大致框架如下 位置控制根据目标位置得出飞
  • Linux Shell脚本检查一个目录是否存在,不存在则创建的方法

    在Linux下 xff0c 检查一个目录是否存在 xff0c 不存在则创建的方法如下 xff0c 通过shell文件 if d dirname then mkdir dirname fi 这里判断名称dirname的目录是否存在 xff0c
  • 在Linux下打开一个新的终端运行程序的脚本

    在ROS程序中经常涉及到需要打开多个终端运行程序的情况 xff0c 通常ROS程序会包含多个节点 xff0c 而每个节点都需要在一个终端中运行 xff0c 在脚本中打开新的终端并在其中运行程序的方法如下 gnome terminal x b
  • ROS目录结构

    参考 xff1a https zhuanlan zhihu com p 139405796 ROS项目通常组织在一个catkin的workspace下面 xff0c 里面包含典型的文件和目录 xff0c 如下 如上图所示 xff0c 首先是
  • Linux下获得某个目录下最新生成的文件的方法

    在程序中需要对最新生成的文件进行处理 可以采用如下的脚本 filename 61 96 ls t dir head n1 awk 39 print 0 39 96 echo filename 返回的filename即为dir目录下最新生成的
  • Ubuntu安装OpenCV

    最近又需要安装OpenCV了 xff0c 真是躲不掉啊 xff0c 也说明了OpenCV的全面 xff0c 图像 视频处理都需要用到它 参考了https blog csdn net public669 article details 990
  • Ubuntu 18.04安装RealTek 8723DE网卡驱动

    台式机是RealTek 8723DE的无线网卡 xff0c 在Ubuntu 18 04下不能自动识别 xff0c 在电脑官网没有Linux的驱动 xff0c 在网上找了安装方法 xff0c 有些不能有效工作 xff0c 找到一个从GitHu
  • Ubuntu绕不开之ROS

    除了前面的OpenCV xff0c ROS也是Ubunt绕不开的软件 Ubuntu 18 04对应的ROS是melodic版本 xff0c 安装推荐参考官方教程 xff1a http wiki ros org melodic Install
  • Ubuntu 18.04之安装中文输入法

    Ubuntu 18 04在安装时可以选择中文界面安装 xff0c 这样会默认安装中文输入法 xff0c 不过这样生成的系统目录名称等都变成中文 xff0c 对于有些技术人员不是很习惯 xff0c 更喜欢安装英文的Ubuntu xff0c 然
  • MySQL视图Duplicate column name问题的解决

    本文将介绍MySQL view视图出现 Duplicate column name 问题的解决解决方法 xff0c 在这里 xff0c 我用的是SQLyog程序 xff0c 其实和在MySQL命令行打代码是一样的 xff0c 只不过用SQL
  • Linux下逐页翻看文件内容的方法

    Linux下用cat查看文件的话会全部打印出文件的所有内容 xff0c 用gedit查看的话可能会死机 xff08 当文件大于5M的时候 xff09 xff0c 用more命令可以逐页翻看需要查看的文件内容 xff0c 命令格式 more
  • Linux下搜索包含指定文字内容文件的方法(grep)

    用grep命令可以方便地在Linux系统下搜索包含指定文字内容的文件 grep r lt text to find gt lt dir gt 搜索指定目录 lt dir gt 下 xff0c 所有包含 lt text to find gt
  • Ubuntu设置登录自动启动程序的方法

    参考链接 xff1a https www cnblogs com the wang p 11230087 html 如上 xff0c 设置自动启动程序的方法有多种 xff0c 分别在系统启动的不同阶段启动 xff0c 在这里需要在用户登录图
  • Linux下脚本自动输入sudo密码的方法

    在设置自启动程序时 xff0c 希望可以自动输入sudo密码以运行一些需要超级用户权限的程序 xff0c 可以如下例子 echo 123456 sudo S apt get update 其中123456为sudo密码 xff0c sudo
  • Linux Shell脚本参数传递与条件判断的方法

    参考链接 xff1a https www runoob com linux linux shell html 参数传递 Shell脚本中参数用 来表示 xff0c 如 1 第一个参数 2 第二个参数 xff0c 以此类推 xff0c 比如t