linux脚本判断变量存在,shell中关于变量是否存在的问题
[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中关于变量是否存在的问题相关推荐
- linux脚本判断流程控制,Shell 脚本-6- 流程控制之判断分支
1. if-else if-else 的判断表达式为中括号[] 注意关键字elif, 不是elseif, 不要搞错了 注意是以关键字fi 结尾, 不是以if 结尾 注意if , [, 条件表达式, ] ...
- linux脚本批量加注释,shell中如何批量注释和取消注释
shell中如何批量注释和取消注释,注释,行号,模式,批量,命令 shell中如何批量注释和取消注释 易采站长站,站长之家为您整理了shell中如何批量注释和取消注释的相关内容. #!/bin/bas ...
- 学习linux杂七杂八——关于shell中的变量
var=value 变量定义并赋值,注意等号前后不能与空格相邻,如果需要有空格(其他特> 殊字符,如$,回车,",',\等)可用转义字符\进行转义. 变量命名规则同C语言. 变量值两端 ...
- linux shell 获取环境变量,bash shell中的环境变量
环境变量--bash shell使用环境变量来存储系统相关数据,并允许将数据存储在内存中. 环境变量分为:全局环境变量 本地环境变量 目录全局环境变量 本地环境变量 设置全局环境变量 删除环境变量 P ...
- Linux脚本设计1——vi编辑器使用、变量及运算符
1.linux初学者编程入门 Linux shell和其他语言的区别 对大部分语言来说,需要作者实现全部功能,linux shell脚本语言相当于站在"巨人"的肩膀上,有很多实用的 ...
- linux脚本编程延时函数,shell脚本编程之函数
技术交流QQ群:1027579432,欢迎你的加入! 欢迎关注我的微信公众号:CurryCoder的程序人生 1.基本的脚本函数 脚本函数出现的目的:为了解决大型处理过程中,需要将相同的重复代码封装起 ...
- shell中的变量及运算符
变量赋值与环境 语法 export name[=word] export –p readonly name[=word] readonly –p export用于修改或打印环境变量,readon ...
- linux C语言多线程库pthread中条件变量的正确用法逐步详解
linux C语言多线程库pthread中条件变量的正确用法: 了解pthread常用多线程API和pthread互斥锁,但是对条件变量完全不知道或者不完全了解的人群. 关于条件变量的典型应用,可以参 ...
- linux 脚本判断一个目录不存在
linux 脚本判断一个目录不存在 1 2 3 4 #!/bin/sh if [ ! -d /mnt/u ]; then mkdir -p /mnt/u fi 本文转自 boy461205160 51 ...
最新文章
- Microbiome:揩老鼠皮毛揩来高分文章——野生哺乳动物的皮肤和肠道微生物群对环境污染做出的反应
- Google Maps API v2 android版本开发 国内手机不支持google play Service相关问题解决--图文教程
- 面向对象分析与设计小结
- asp.net读取用户控件,自定义加载用户控件
- 多层html怎么找到密码输入框,Vant PasswordInput 密码输入框
- Java笔记-jdbc传输clob到Oracle数据库
- Hadoop框架:集群模式下分布式环境搭建
- 非线性降维-核主成分分析KPCA
- Android的快速开发框架 afinal
- Win10保护眼睛豆沙绿背景
- 基于钉钉的多人协作项目办公
- 导弹防御系统(LIS+dfs)
- python,ipython,pycharm安装
- 自从会了爬虫妈妈再也不担心我不会植物分类啦
- 微信小程序的开发方式有哪些
- JDK15已发布!网友:我还在JDK8踏步走...
- Windows系统下批量重命名文件(超详细操作讲解)
- 每一个软件开发人员绝对必须掌握的关于 Unicode 和字符集的最基础的知识 - A
- Windows CE下中文输入法编辑器
- java定义接口的关键字_Java中定义接口的关键字是什么?