[TOC]

## fish shell判断某个变量是否存在

fish shell 判断变量是否存在直接使用 `test 变量`就可以,然后我们使用`and`和`or`实现if..else..的逻辑。如下所示:

```bash

#!/usr/bin/env fish

set a 1

set b 3

test $a -gt $b ;and echo "a>b" ;or echo "a<=b"

test $c ;and echo "存在变量a";or echo "不存在变量c"

```

![Image](https://img.kancloud.cn/ed/c0/edc06b12a86417b3d7bd1003b0a93929_491x180.png)

上面的脚本使用`and`和`or`实现了`if..else..`的逻辑,是脚本更简洁。

因此,使用fish写含有参数传递的脚本时,可以使用上面提及到的方法,先判断参数是否存在,然后匹配参数在作出相应的执行。如下例子:

```bash

#!/usr/bin/env fish

if test $argv[1];and test $argv[1] = "help"

echo "成功匹配到 help"

else

echo "未匹配到你输入的参数"

end

```

![Image](https://img.kancloud.cn/73/0d/730d7f6534d7fefe65d39eb257c86df0_415x162.png)

之所以要使用test判断参数是否存在是因为,fish shell在变量不存在时进行匹配,将会报错,或者警告,所以这样做很有必要!

## bash shell如何判断参数是否存在

bash中并不用and和or,而是使用`&&`和`||`来实现if..else..的流程控制,如下:

```bash

#!/bin/bash

a=1

b=2

test $a -gt $b && echo "a>b" || echo "a<=b"

```

![Image](https://img.kancloud.cn/44/22/4422b74c862e51acfdde51ca115e102d_384x79.png)

```bash

#!/bin/bash

a=1

b=2

test $a -gt $b && echo "a>b" || echo "a<=b"

test $1 && echo "脚本至少输入了一个参数" || echo "脚本没有输入参数"

test $2 && echo "脚本输入了第2个参数" || echo "脚本没有输入第2个参数"

```

![Image](https://img.kancloud.cn/89/7a/897af1abcf712283cf8f10e1ca680024_451x115.png)

于是我们可以这样来进行条件判断,这样基本统一了fish和bash这两种shell,不会记混了!

```bash

#!/bin/bash

if test $1 && test $1 = "hello" ;then

echo "$1"

else

echo "无法解析输入"

fi

```

![Image](https://img.kancloud.cn/90/fc/90fc60f1a878a32416902ed0a2c38440_400x120.png)

linux脚本判断变量存在,shell中关于变量是否存在的问题相关推荐

  1. linux脚本判断流程控制,Shell 脚本-6- 流程控制之判断分支

    1. if-else if-else 的判断表达式为中括号[] 注意关键字elif, 不是elseif, 不要搞错了 注意是以关键字fi 结尾, 不是以if 结尾 注意if , [, 条件表达式, ] ...

  2. linux脚本批量加注释,shell中如何批量注释和取消注释

    shell中如何批量注释和取消注释,注释,行号,模式,批量,命令 shell中如何批量注释和取消注释 易采站长站,站长之家为您整理了shell中如何批量注释和取消注释的相关内容. #!/bin/bas ...

  3. 学习linux杂七杂八——关于shell中的变量

    var=value 变量定义并赋值,注意等号前后不能与空格相邻,如果需要有空格(其他特> 殊字符,如$,回车,",',\等)可用转义字符\进行转义. 变量命名规则同C语言. 变量值两端 ...

  4. linux shell 获取环境变量,bash shell中的环境变量

    环境变量--bash shell使用环境变量来存储系统相关数据,并允许将数据存储在内存中. 环境变量分为:全局环境变量 本地环境变量 目录全局环境变量 本地环境变量 设置全局环境变量 删除环境变量 P ...

  5. Linux脚本设计1——vi编辑器使用、变量及运算符

    1.linux初学者编程入门 Linux shell和其他语言的区别 对大部分语言来说,需要作者实现全部功能,linux shell脚本语言相当于站在"巨人"的肩膀上,有很多实用的 ...

  6. linux脚本编程延时函数,shell脚本编程之函数

    技术交流QQ群:1027579432,欢迎你的加入! 欢迎关注我的微信公众号:CurryCoder的程序人生 1.基本的脚本函数 脚本函数出现的目的:为了解决大型处理过程中,需要将相同的重复代码封装起 ...

  7. shell中的变量及运算符

     变量赋值与环境 语法 export name[=word] export –p readonly name[=word] readonly –p export用于修改或打印环境变量,readon ...

  8. linux C语言多线程库pthread中条件变量的正确用法逐步详解

    linux C语言多线程库pthread中条件变量的正确用法: 了解pthread常用多线程API和pthread互斥锁,但是对条件变量完全不知道或者不完全了解的人群. 关于条件变量的典型应用,可以参 ...

  9. linux 脚本判断一个目录不存在

    linux 脚本判断一个目录不存在 1 2 3 4 #!/bin/sh if [ ! -d /mnt/u ]; then mkdir -p /mnt/u fi 本文转自 boy461205160 51 ...

最新文章

  1. Python(五)之迭代器和列表解析
  2. [转载] 杜拉拉升职记——30 我保证以后一直对你好
  3. awk是什么?awk工作原理是什么?怎么用awk?
  4. C语言博客作业--结构体
  5. 【CentOS 7笔记11】,目录权限,所有者与所有组,隐藏权限#171022
  6. 【算法】剑指 Offer 59 - II. 队列的最大值
  7. C语言中结构体内存存储方式
  8. 多项式辗转相除法求最大公约数_点灯游戏、方格填数与 Chebyshev 多项式(续)...
  9. 系统学习NLP(十三)--词向量(word2vec原理)
  10. MATLAB 绘图基础
  11. 2022-2028中国安全代码审查软件市场现状研究分析与发展前景预测报告
  12. 漏洞取证_使用Linux文件系统取证进行漏洞检测
  13. 什么是ARM TCM内存
  14. 浅谈垂直腔面发射激光器的设计原则
  15. 《2018区块链技术应用白皮书》完整版查看
  16. 面试官十年面试经验总结
  17. 回答几个很多人在问的问题,以及苏生不惑提供的服务
  18. css-隐藏滚动条并可以滚动内容
  19. hdu 2475 box LCT
  20. 单机斗地主java下载_java单机斗地主

热门文章

  1. 北京经纬信息技术公司企业级轻量框架内训圆满结束
  2. Nvidia GTC China 19 keynote
  3. 商品折扣后的最终价格
  4. java实现弹球游戏_Java swing版弹球游戏源代码下载
  5. 使用c++ opencv 实现mura 检测的代码
  6. TS协议解析第二部分(PMT)
  7. 404 Note Found 队-Alpha 事后诸葛亮
  8. 算法6:克鲁斯卡尔算法
  9. jQuery Masonry构建pinterest网站布局注意要点(转)
  10. 【Abee】吃掉西瓜——西瓜书学习笔记(三)