[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. Microbiome:揩老鼠皮毛揩来高分文章——野生哺乳动物的皮肤和肠道微生物群对环境污染做出的反应
  2. Google Maps API v2 android版本开发 国内手机不支持google play Service相关问题解决--图文教程
  3. 面向对象分析与设计小结
  4. asp.net读取用户控件,自定义加载用户控件
  5. 多层html怎么找到密码输入框,Vant PasswordInput 密码输入框
  6. Java笔记-jdbc传输clob到Oracle数据库
  7. Hadoop框架:集群模式下分布式环境搭建
  8. 非线性降维-核主成分分析KPCA
  9. Android的快速开发框架 afinal
  10. Win10保护眼睛豆沙绿背景
  11. 基于钉钉的多人协作项目办公
  12. 导弹防御系统(LIS+dfs)
  13. python,ipython,pycharm安装
  14. 自从会了爬虫妈妈再也不担心我不会植物分类啦
  15. 微信小程序的开发方式有哪些
  16. JDK15已发布!网友:我还在JDK8踏步走...
  17. Windows系统下批量重命名文件(超详细操作讲解)
  18. 每一个软件开发人员绝对必须掌握的关于 Unicode 和字符集的最基础的知识 - A
  19. Windows CE下中文输入法编辑器
  20. java定义接口的关键字_Java中定义接口的关键字是什么?

热门文章

  1. Java、JSP酒店餐饮管理系统
  2. 让IE6/IE7/IE8支持CSS3属性的脚本ie-css3.htc
  3. PlentyOfFish.com .NET网站的又一传奇(转)
  4. HTML+CSS(1)
  5. Linux下文件的编译
  6. 【C语言】数组的超详细解答,走过路过别错过
  7. 使用Apache实现负载均衡。
  8. 为什么鼓励可以重塑一个职场人?
  9. 鸿蒙物联网合作商,已有大量合作伙伴进行开发!华为公布三大鸿蒙OS系统
  10. MSISDN(手机号)