linux bash如何判断脚本命令参数是否存在

2023-11-01

linux bash处理较简单的参数。如

./test.sh 10

而很少使用./test -n 10这种带选项的方式。 典型用法为:

#!/bin/bash

if [ x$1 != x ]
then
    #...有参数
else
then
    #...没有参数
fi

为什么要使用 x$1 != x 这种方式来比较呢?想像一下这种方式比较:

if [ -n $1 ] #$1不为空

但如果用户不传参数的时候,$1为空,这时 就会变成 [ -n ] ,所以需要加一个辅助字符串来进行比较。

转载来自:
shell–传入参数的处理 - 吴家应的专栏 - CSDN博客
http://blog.csdn.net/qzwujiaying/article/details/6371246

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

linux bash如何判断脚本命令参数是否存在 的相关文章

  • Python 线程与 Linux 中的多处理

    基于此question https stackoverflow com questions 807506 threads vs processes in linux我假设创建新流程应该几乎和创造新线程在Linux中 然而 很少的测试显示出截
  • 如何使用 shell 脚本解压所有 .tar.gz?

    我试过这个 DIR path tar gz if ls A DIR 2 gt dev null then echo not gz else tar zxvf path tar gz C path tar fi 如果该文件夹有一个 tar 则
  • 并发 I/O - 缓冲区损坏、块设备驱动程序

    我开发块分层设备驱动程序 所以 我拦截WRITE请求并加密数据 并解密数据end bio 例行程序 在处理和READ要求 所以在单流中一切正常 但是 如果尝试同时从两个或更多进程执行 I O 我会遇到缓冲区内容损坏的情况 我没有任何本地存储
  • 如何搭建qtwayland?

    我花了一整天的时间尝试使用QtWayland Compositor 1 0在 Qt 创建者中 我已经遵循了从那里开始的所有步骤https wiki qt io QtWayland https wiki qt io QtWayland但我收到
  • Mongo:无法连接到服务器 127.0.0.1:27017 位于 src/mongo/shell/mongo.js:145

    当我尝试在 ubuntu 中的 shell 中运行 mongo 或打开 rockmongo 时 我看到以下错误 couldn t connect to server 127 0 0 1 27017 at src mongo shell mo
  • 带有接收器的 boost_log 示例无法编译

    我正在考虑将 boost log 用于一个项目 一开始我就遇到了以下问题 我在以下位置找到的升压日志示例 http www boost org doc libs 1 54 0 libs log example doc tutorial fi
  • Pthread互斥锁由不同线程解锁

    一个天真的问题 我之前读到过 MUTEX 只能由锁定它的线程解锁 但我写了一个程序THREAD1锁定 mutexVar 并进入睡眠状态 然后THREAD2可以直接解锁mutexVar做一些操作并返回 gt 我知道每个人都说我为什么要这样做
  • 串口读取未完成

    下面的函数用于在Linux下从串口读取数据 我在调试时可以读取完整的数据 但是当我启动程序时 读缓冲区似乎并不完整 我正确接收了一小部分数据 但缓冲区的其余部分完全正确zero 可能是什么问题呢 int8 t serial port ope
  • 使用inotify监控文件

    我正在使用 inotify 来监视本地文件 例如使用 root temp inotify add watch fd root temp mask 删除该文件后 程序将被阻止read fd buf bufSize 功能 即使我创建一个新的 r
  • 如何像C99一样使用make和编译?

    我正在尝试使用 Makefile 编译 Linux 内核模块 obj m main o all make C lib modules shell uname r build M PWD modules clean make C lib mo
  • Docker容器内的动态监听端口

    我有一个应用程序 在使用其默认端口建立一些连接后 开始打开 侦听 新的随机端口来处理现有连接 然后删除它们 视频通话 它还在通信协议内交换其IP地址和端口 我能够解决IP地址问题 但仍然无法找到一种方法来动态告诉主机的IPTABLES在Do
  • python 的 fcntl.flock 函数是否提供文件访问的线程级锁定?

    Python 的 fcnt 模块提供了一种名为 flock 1 的方法来证明文件锁定 其描述如下 对文件执行锁定操作op 描述符 fd 文件对象提供 fileno 方法被接受为 出色地 请参阅 Unix 手册集群 2 了解详情 在某些系统上
  • 容器上的“container_memory_working_set_bytes”指标和 OOM-killer 之间有什么关系?

    我试图找出并理解 OOM killer 如何在容器上工作 为了弄清楚这一点 我读了很多文章 发现 OOM killer 会根据oom score And oom score是由oom score adj以及该进程的内存使用情况 有两个指标c
  • 如何让 VSCode 在当前工作区中打开?

    我在 Linux 上使用 VSCode 我有多个 Linux 工作区 当我在新工作区中的 VSCode 中打开新文件时 它会在原始工作区中的 VSCode 中打开一个新选项卡 而不是在当前工作区中打开 VSCode 的新实例 这确实是令人讨
  • 64位版本的adb和fastboot?

    我在 Debian 7 3 x64 已完全修补 上发现了以下错误 我很确定这是因为adb即使在其 SDK 工具的 64 位发行版中也是 32 位 which adb opt android sdk platform tools adb op
  • 未找到 DEADLINE 调度策略

    我想在 C 中实现 DEADLINE 调度策略 我知道该功能已实现Linux 3 14 10我正在使用 Ubuntu 14 04Linux 3 17 0 031700 lowlatency 201410060605 SMP PREEMPT这
  • 当下一条(跳过)指令是变量定义时,Shellcode 中的 JMP 意外行为

    Purpose 我试图利用 x86 64 中的 RIP 模式 尽管程序集本身按预期执行 但 shellcode 却没有 问题 简而言之 我尝试过的是这样的 jmp l1 str1 db some string l1 other code l
  • pip install reportlab 错误:命令“x86_64-linux-gnu-gcc”失败,退出状态为 1

    使用 ubuntu 虚拟环境 我尝试安装reportlab 命令是 pip install reportlab 在这个目录下 company2 stefano stefano X550EP htdocs company2 错误是 error
  • Powershell从Linux客户端连接到Windows远程

    我正在尝试从我的 Linux 工作站远程连接到 Windows 计算机 我在 Arch Linux 工作站上安装了 powershell 目前正在尝试连接到主机 在主机上 Enable PSRemoting 然后允许所有主机Set Item
  • 如何在 arago 项目构建中编写自己的食谱包

    我如何在 arago 项目构建中编写自己的食谱包 我知道它可以是 bitbake 文件 但我怎么写 不知道 我在互联网上搜索 但未能找到任何好的来源 有人可以给我提供链接或示例来开始吗 RegardsLinux 学习者 使用 Bitbake

随机推荐

  • 第二十六章 登录检验解决⽅案 JWT

    单机tomcat应 登录检验 sesssion保存在浏览器和应 服务器会话之间 户登录成功 服务端会保存 个session 当然客户端有 个sessionId 客户端会把sessionId保存在cookie中 每次请求都会携带这个sessi
  • ctfshow web224 sql_文件上传产生sql注入 详解

    sql 文件上传产生sql注入 首先是扫描 或者 直觉检查 有个robots txt 访问这个页面 发现可以重置密码 重置后admin登录 是个文件上传 测试下来不是文件上传的漏洞 题目也是提示的sql 我这里建了个bmp的文件可以成功上传
  • API接口及apipost,postman的基本使用

    一 简介 接口是 前后端通信的桥梁 被称为 API接口 这里的接口指的是数据接口 一个接口就是 服务中的一个路由规则 根据请求响应结果 给客户端返回结果时 一般是JSON格式的 接口的作用 实现前后端通信 一般接口由一下几个部分组成 请求方
  • Shiro使用redis作为缓存(解决shiro频繁访问Redis)(十一)

    原文地址 转载请注明出处 https blog csdn net qq 34021712 article details 80791219 王赛超 之前写过一篇博客 使用的一个开源项目 实现了redis作为缓存 缓存用户的权限 和 sess
  • 一份完整的HTML模板文件、HTML中容易被忽略的基础知识点

  • Apache HBase API及备份与还原

    一 Apache HBase API Apache HBase也适用于多个外部API 有关更多信息 请参阅Apache HBase外部API 将在下一节的内容中介绍 有关使用本机HBase API的信息 请参阅User API Refere
  • Java 日期时间类的简单介绍及运用

    Date类 1 简介 java util Date类 表示特定的瞬间 精确到毫秒 构造方法 public Date 分配Date对象并初始化此对象 以表示分配它的时间 精确到毫秒 public Date long date 分配Date对象
  • 【Unity】URP渲染管线下代码获取相机的Volume Mask属性

    步骤 1 引用URP的命名空间 2 获取摄像机 3 通过URP扩展获取Volume Mask属性 附 层级的相关代码 Reference 1 引用URP的命名空间 using UnityEngine Rendering Universal
  • SVN的备份与还原

    文章目录 操作环境及相关指令 操作环境 相关指令 防火墙相关指令 端口号相关指令 SVN相关指令 文件传输 备份与还原 备份 SVN相关配置信息 SVN软件安装 还原 访问 SVN地址重定向 操作环境及相关指令 操作环境 操作系统 root
  • SPI技术-JDK实现

    SPI是什么 SPI全称Service Provider Interface 是Java提供的一套用来被第三方实现或者扩展的API 它可以用来启用框架扩展和替换组件 Java SPI 实际上是 基于接口的编程 策略模式 配置文件 组合实现的
  • OpenSSL创建生成CA证书、服务器、客户端证书及密钥

    使用OpenSSL创建生成CA证书 服务器 客户端证书及密钥 目录 使用OpenSSL创建生成CA证书 服务器 客户端证书及密钥 一 生成CA证书 二 生成服务器证书 三 生成客户端证书 四 测试 本片博客对对应资源下载 免积分 https
  • js轮播图的制作详细过程

    JS轮播图 1 在body里面写简单的HTML代码 首先在顶部head标签里引入外部CSS和JS 注意要引入JQuery库 并且放在所写的js上面 不然不会有效果 然后在一个div中包裹两个url 第一个用于显示图片 第二个用于定义页码 代
  • 数据结构——>栈

    栈 栈的介绍 栈的应用场景 栈的代码实现 实现栈的思路分析 入栈 出栈 遍历栈 栈的介绍 1 栈是一个先入后出的有序列表 想象成弹夹 2 变化的一端为栈顶 固定的一端为栈底 3 入栈演示图 4 出栈演示图 栈的应用场景 1 递归 2 四则运
  • Linux系统ioctl使用示例 ioctl实验

    本文是我在andoid实验的ioctl的功能 如双向传递参数 贴出来希望对学习ioctl的人很有帮助 linux的ioctl功能是很强大的 android显示模块还有camera模块都离不开ioctl让上层和内核交互 这个实验对初学者很有帮
  • malloc 背后的虚拟内存 和 malloc实现原理

    面试的时候经常会被问到 malloc 的实现 从操作系统层面来说 malloc 确实是考察面试者对操作系统底层的存储管理理解的一个很好的方式 涉及到虚拟内存 分页 分段等 下面逐个细说 1 虚拟内存 首先需要知道的是程序运行起来的话需要被加
  • 多态的作用

    对象的上转型对象体现了多态 多态的作用 将不同的子类对象统一看做父类 屏蔽了不同子类之间的差异 有子类到父类 有特殊到一般 是程序变得通用 public class TestPloy public sataic void main Stri
  • flink连接kafka报:org.apache.kafka.common.errors.TimeoutException

    测试flink1 12 7 连接kafka package org test flink import org apache flink api common serialization SimpleStringSchema import
  • 用chatgpt超级写手批量制作抖音带货文案并直接SEO霸屏

    带货文案怎么写 最好的解决方案就是学习同行 简版流程 通过抖音热点宝 手机端 的种草视频 或者抖音筛选出最多点赞 半年内的带货视频 提取出带货文案 然后用chatgpt直接改写一下带货文案 也可以根据抖音商城的爆款商品 提炼出卖点 然后利用
  • HTML5-表单

    HTML5 表单 一 Form 1 action 属性 action 属性用于指定表单提交时向何处发送表单数据 即需要发送的服务器地址
  • linux bash如何判断脚本命令参数是否存在

    linux bash处理较简单的参数 如 test sh 10 而很少使用 test n 10这种带选项的方式 典型用法为 bin bash if x 1 x then 有参数 else then 没有参数 fi 为什么要使用 x 1 x