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