详解:Shell脚本变量判断参数命令

161 篇文章 0 订阅
订阅专栏

详解:Shell脚本变量判断参数命令详解:Shell脚本变量判断参数命令

系统变量
$n   传递给脚本或函数的参数。n 是一个数字,表示第几个参数。例如,第一个参数是$1,第二个参数是$2
$?   上个命令的退出状态,或函数的返回值。成功返回0,失败返回1
$#   传递给脚本或函数的参数个数
$*   所有这些参数都被双引号引住。若一个脚本接收两个参数,$*等于$1$2
$0   正在被执行命令的名字。对于shell脚本而言,这是被激活命令的路径
$@   被双引号(” “)包含时,与 $* 稍有不同。若一个脚本接收到两个参数,$@等价于$1$2
$$   当前shell的进程号。对于shell脚本,这是其正在执行时的进程ID
$!   前一个后台命令的进程号
文件或目录判断
-b file 若文件存在且是一个块特殊文件,则为真
-c file 若文件存在且是一个字符特殊文件,则为真
-d file 若文件存在且是一个目录,则为真
-e file 若文件存在,则为真
-f file 若文件存在且是一个规则文件,则为真
-g file 若文件存在且设置了SGID位的值,则为真
-h file 若文件是软链接,则为真
-k file 若文件存在且设置了”sticky”位的值
-L file 若文件为符号链接,则为真
-p file 若文件存在且为一已命名管道,则为真
-r file 若文件可读,则为真
-s file 判断文件是否存在,且是否为非空,不为空,则为真
-S file	判断文件是否存在,且是否为套接字文件
-t file 文件描述符(默认为1)指定的设备为终端时为真
-u file 若文件存在且设置了SUID位,则为真
-w file 若文件可写,则为真
-x file 若文件可执行,则为真
[ file1 -nt file2 ] 若file1比file2新,或file1存在但file2不存在,则为真
[ file1 -ot file2 ] 若file1比file2老,或file2存在但file1不存在,则为真
[ file1 -ef file2 ] 若file1和file2指向相同的设备和节点号则返回,为真
整数判断
-eq  两数相等,则为真     例:if [ "$a" -eq "$b" ]
-ne  两数不相等,则为真   例:if [ "$a" -ne "$b" ]
-gt  a大于b,则为真       例:if [ "$a" -gt "$b" ]
-ge  大于或等于,则为真   例:if [ "$a" -ge "$b" ]
-lt  a小于b,则为真       例:if [ "$a" -lt "$b" ]
-le  a小于或等于b,则为真 例:if [ "$a" -le "$b" ]

< 小于(需双括号)      例:(("$a" < "$b"))
<=   小于等于(需双括号)  例:(("$a" <= "$b")) 
>    大于(需双括号)      例:(("$a" > "$b"))
>=   大于等于(需双括号)  例:(("$a" >= "$b"))
小数据比较可使用AWK。
逻辑运算判断符
!  [ ! false ]              返回true 逻辑否,条件为假,结果为真
-a [ $a -lt 2 -a $b -gt 5 ] 返回true 逻辑与,两个表达式都为真,则为真
-o [ $a -lt 2 -o $b -gt 5 ] 返回true 逻辑或,只要有一个表达式为true,则为真

[ ] || [ ] 用OR来合并两个条件
[ ] && [ ] 用AND来合并两个条件
字符串判断
== 若两个字符串相同则为真,与=等价 例:[ "str1" = "str2" ]
!= 若字符串不相同则为真           例:[ "str1" != "str2" ]
< 若str1字典排序在str2前则为真   例:[[ "str1" < "str2" ]] >  若str1字典排序在str2后则为真   例:[ "str1" \> "str2" ]
-n 若str长度非零则为真,即非空     例:[ -n "str1" ]
-z 若file长度为零,即空,则为真     例:[ -z "str1" ]

注意:在[]结构中”< “需要被转义,例如:[ "str1" /< "str2" ],在双中括号中则无需转义。 总结:使用-n在[]结构中测试,必须要用""把变量引起来,使用一个未被""的字符串,请使用 ! -z ,如果使用未被双引号变量,虽然可以工作,但这并不安全,习惯于使用双引号括住变量测试字符串是一种良好的习惯。 另外,[[ ]] 结构比[ ]结构更加通用

本文地址:https://www.linuxprobe.com/shell-script-variable.html

shell--判断脚本执行时是否有传参、判断文件/文件夹是否存在、判断字符串是否相等、判断上个命令执行是否正常、判断字符串是否为空
实践出真知
06-28 3877
shell--判断脚本执行时是否有传参、判断文件/文件夹是否存在、判断字符串是否相等、判断上个命令执行是否正常、判断字符串是否为空
[1188]shell中如何判断脚本是否有带参数
周小董
04-03 1473
参考:https://jingyan.baidu.com/article/f7ff0bfc32200e2e26bb13df.html。
shell脚本如何判断变量的值
Peak_Gerry的博客
09-10 5302
-z 判断 变量的值,是否为空; zero = 0 变量的值,为空,返回0,为true 变量的值,非空,返回1,为false -n 判断变量的值,是否为空 name = 名字 变量的值,为空,返回1,为false 变量的值,非空,返回0,为true 在中括号中,判断变量的值, 加不加双引号的问题? pid=“123” [ -z “$pid” ] 单对中括号变量必须要加双引号 [[ -z $pi...
Shell——判断传入参数的个数
热门推荐
GeekZW的博客
06-12 1万+
工作中常会用到shell脚本,总结一些常用的简单操作。 1. 判断传入参数的个数 #!/bin/bash # author:geekzw if [ $# -eq 2 ]; then echo "$1 $2" exit else echo "错误" fi 运行结果
详解shell 变量
01-09
脚本语言在定义变量时通常不需要指明类型,直接赋值就可以,Shell变量也遵循这个规则。 在Bash shell 中,每一个变量的值都是字符串,无论你给变量赋值时有没有使用引号,值都会以字符串的形式存储。这意味着,Bash ...
linux shell脚本对未定义变量判断以及if的用法详解
09-15
今天小编就为大家分享一篇linux shell脚本对未定义变量判断以及if的用法详解,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
Linux bash Shell中的变量类型详解
01-20
二、本地变量: varname=value:作用域为整个bash进程可以使用; 变量命名规范: 1. 只能含字母、数字和下划线,并且以字母和下划线开头 2. 最好不要跟系统已有的环境变量重名 3. 见名知意 三、局部变量: local var...
详解Shell 脚本中 “$” 符号的多种用法
01-20
$0:Shell命令本身 1到9:表示 Shell 的第几个参数 $? :显示最后命令的执行情况 $#:传递到脚本参数个数 $$:脚本运行的当前进程 ID 号  $*:以一个单字符串显示所有向脚本传递的参数  $!:后台运行...
shell脚本传递参数,并且判断参数是否为空
秃了也弱了
09-22 9316
#!/bin/bash echo "Shell 传递参数实例!"; echo "执行的文件名:$0"; echo "第一个参数为:$1"; echo "第二个参数为:$2"; echo "第三个参数为:$3"; arg1=arg; if [ -n "$1" ] then echo "第一个参数$1" else echo "第一个参数为空" fi 测试: ./test.sh a b c d 结果: Shell 传递参数实例! 执行的文件名:./test.sh 第一个参数为...
shell编程之命令参数判断
xjc864588399的博客
01-13 1741
#!/bin/bash if [ "$#" -ne 2 ];then echo "the num is not equal to 2" exit 1 fi if [ "$1" == "$2" ] then echo "The two files can't be the same." echo "No copy." >&2 exit 2 fi if test
shell判断命令参数
需求导向<=问题导向!本质导向!结果导向!
07-12 720
1 #!/bin/sh  2 if [ "$1" = "yes" ];then  3    echo yes  4 elif [ "$1" = "no" ];then  5    echo no  6 else   7    echo nothing  8 fi注意:$1外面一定
Linux Shell程序设计
没有胡子的猫Asimov
03-16 734
LInux Shell程序设计 将指定路径加到环境变量$PATH PATH=$PATH:绝对路径 export PATH 用户自定义变量 a=33 echo $a echo $a 只读变量 readonly a=33 公用变量 a=33 export a 清除变量 unset a 位置参数 $1:shell取第一个参数 从1开始 $0:表示当前执行shell程序名 预定义变量 不能重...
Shell脚本传递参数的4种方式(位置参数、特殊变量、环境变量和命名参数)实例说明
最新发布
ken2232的博客
08-01 1万+
Shell脚本传递参数的4种方式(位置参数、特殊变量、环境变量和命名参数)实例说明
shell脚本——条件判断
Cantevenl的博客
03-27 3830
shell条件判断条件判断语法格式条件判断相关参数判断文件类型实例判断文件权限判断文件新旧判断整数实例判断字符串多重条件判断实例逻辑运算符总结 条件判断语法格式 格式1: test 条件表达式 格式2: [ 条件表达式 ] 格式3: [[ 条件表达式 ]] 支持正则 =~ 注意 [ ] 和 [[ ]] 两边必须有空格 条件判断相关参数 判断文件类型 判断参数 含义 -e 判断文件是否存在(任何类型文件) -f 判断文件是否存在并且是一个普通文件 -d 判断文件是否存在并且是一个目
shell参数判断
github_zwl的博客
11-13 1万+
对于只判断一个参数的 #!/bin/bash if [ ! -n "$1" ] ;then     echo "you have not input a agrs!" else     echo "the args you input is $1" fi 或者 在shell中$1变量表示脚本的第一个参数。所以如果判断$1参数是空值,即可表示脚本没有参数。示例代码如下:
linux shell脚本之if判断
08-24 864
linux if命令    无论什么编程语言都离不开条件判断SHELL也不例外。      if list then          do something here      elif list then          do another thing here      else         do something else here      fi
shell脚本练习
YongDaiMe的博客
09-13 355
文件分发脚本xsync #!/bin/bash # 1. 判断参数,小于1个报错 # $#:判断输入参数的个数 # -lt:less then,小于 if [[ $# -lt 1 ]]; then echo Not Enough Argument! fi # 2. 遍历集群 for host in hadoop102 hadoop103 hadoop104; do # 打印正在遍历哪个节点 echo ======== $host ======== # 3. 遍历所有目录 # $@:相当于将输入参数
linux脚本判断变量存在,shell中关于变量是否存在的问题
weixin_31475247的博客
05-03 6708
[TOC]## fish shell判断某个变量是否存在fish shell 判断变量是否存在直接使用 `test 变量`就可以,然后我们使用`and`和`or`实现if..else..的逻辑。如下所示:```bash#!/usr/bin/env fishset a 1set b 3test $a -gt $b ;and echo "a>b" ;or echo "a<=b"test $...
shell脚本命令详解
07-29
Shell脚本是一种用于编写和执行命令脚本语言。在Linux中,有多种Shell命令解析器可供选择,常见的有Bourne Shell(/usr/bin/sh或/bin/sh)、Bourne Again Shell(/bin/bash)、C Shell(/usr/bin/csh)、K Shell(/usr/bin/ksh)和Shell for Root(/sbin/sh)等。\[2\] 在编写Shell脚本文件时,通常需要在文件的最前面添加一行指定解析器的声明,例如#!/bin/bash。这是因为Linux中存在多种解析器,它们之间的语法可能有所不同,通过添加这一声明可以确保使用指定的解析器来执行脚本。\[3\] 在Shell脚本中,可以使用source命令或点号(.)来加载另一个脚本文件。这两种方式都是将指定的脚本内容加载到当前脚本中,并由同一个Shell进程来执行。与之相反,使用sh命令调用另一个脚本会创建一个新的Shell进程来执行,导致父进程中的变量无法在子进程中访问到。\[1\] 总结来说,Shell脚本是一种用于编写和执行命令脚本语言,可以使用不同的Shell命令解析器来解析和执行脚本。在编写脚本时,需要在文件的最前面添加解析器声明,以确保使用指定的解析器。同时,可以使用source命令或点号(.)来加载另一个脚本文件,而使用sh命令会创建一个新的Shell进程来执行脚本。 #### 引用[.reference_title] - *1* *2* *3* [Linux脚本shell详解](https://blog.csdn.net/footless_bird/article/details/123698139)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insert_down28v1,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
写文章

热门文章

  • Ubuntu16.04 用VNC链接 GNOME 桌面 1827
  • 秒懂Docker 中安装扩展 PHP 1639
  • Windows、Linux和Mac OS的区别 1617
  • Windows系统运维转linux系统运维的经历 992
  • 教你如何利用fastcgi_cache缓存加速WordPress 859

分类专栏

  • 软文 50篇
  • Linux技术干货 161篇

最新评论

  • Windows系统运维转linux系统运维的经历

    woowahahahahaha: windows命令行netstat -tno 协议 本地地址 外部地址 状态 PID 卸载状态 TCP 127.0.0.1:6063 127.0.0.1:54533 ESTABLISHED 5532 InHost TCP 127.0.0.1:6064 127.0.0.1:6065 ESTABLISHED 2576 InHost TCP 127.0.0.1:6065 127.0.0.1:6064 ESTABLISHED 2576 InHost TCP 127.0.0.1:54533 127.0.0.1:6063 ESTABLISHED 2576 InHost TCP 192.168.110.207:6050 20.197.71.89:443 ESTABLISHED 5784 InHost TCP 192.168.110.207:6074 1.192.193.177:80 ESTABLISHED 10000 InHost TCP 192.168.110.207:6150 180.163.150.34:443 ESTABLISHED 8376 InHost TCP 192.168.110.207:6164 121.11.192.164:443 ESTABLISHED 8376 InHost TCP 192.168.110.207:6176 14.17.92.29:443 ESTABLISHED 8376 InHost 我想过滤出第三列不是以127.0.0开头的行 windows命令行应该怎么写呀?

  • Linux系统让我的机器学习之路如虎添翼

    ruolyn: 您好,请问你学的线性代数、概率论和数据统计都是哪些版本的书,可以拍个照片给我吗,拜托了,大神

  • 如何使用serverchan微信推送告警

    alice s: 感谢分享

  • Windows系统运维转linux系统运维的经历

    fosidi: 在线培训班哪个平台有?我也想学习下

  • 秒懂Docker 中安装扩展 PHP

    kepreal: 学习了

您愿意向朋友推荐“博客详情页”吗?

  • 强烈不推荐
  • 不推荐
  • 一般般
  • 推荐
  • 强烈推荐
提交

最新文章

  • 如何选择最合适的DDoS高防服务
  • 使用 yum-cron 自动更新 Linux系统
  • 使用Linux容器迅速搭建渗透测试环境(下篇)
2018年213篇

目录

目录

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值

两个鬼故事竟价排名免费公司起名大全2021最新版的混沌世界攻略大卫科波菲尔读后感微博怎么发文章遇龙电视剧免费观看全集怎么免费婴儿起名字黑海夺金电影除四害公司起名起名字排行榜王和王起名字俊字起名大全男孩邢台区号美味儿媳新生儿男孩起名免费取名字大全生辰八字起名还真道起名字大全2013电梯起名起名字昭的含义越俎代庖是什么意思菲起名的寓意恪尽职守余起名字的我爱文学姓苏的男孩起名古风起字起名字向前向前向前快穿之收视女王咨询公司起什么名字好的少年生前被连续抽血16次?多部门介入两大学生合买彩票中奖一人不认账让美丽中国“从细节出发”淀粉肠小王子日销售额涨超10倍高中生被打伤下体休学 邯郸通报单亲妈妈陷入热恋 14岁儿子报警何赛飞追着代拍打雅江山火三名扑火人员牺牲系谣言张家界的山上“长”满了韩国人?男孩8年未见母亲被告知被遗忘中国拥有亿元资产的家庭达13.3万户19岁小伙救下5人后溺亡 多方发声315晚会后胖东来又人满为患了张立群任西安交通大学校长“重生之我在北大当嫡校长”男子被猫抓伤后确诊“猫抓病”测试车高速逃费 小米:已补缴周杰伦一审败诉网易网友洛杉矶偶遇贾玲今日春分倪萍分享减重40斤方法七年后宇文玥被薅头发捞上岸许家印被限制高消费萧美琴窜访捷克 外交部回应联合利华开始重组专访95后高颜值猪保姆胖东来员工每周单休无小长假男子被流浪猫绊倒 投喂者赔24万小米汽车超级工厂正式揭幕黑马情侣提车了西双版纳热带植物园回应蜉蝣大爆发当地回应沈阳致3死车祸车主疑毒驾恒大被罚41.75亿到底怎么缴妈妈回应孩子在校撞护栏坠楼外国人感慨凌晨的中国很安全杨倩无缘巴黎奥运校方回应护栏损坏小学生课间坠楼房客欠租失踪 房东直发愁专家建议不必谈骨泥色变王树国卸任西安交大校长 师生送别手机成瘾是影响睡眠质量重要因素国产伟哥去年销售近13亿阿根廷将发行1万与2万面值的纸币兔狲“狲大娘”因病死亡遭遇山火的松茸之乡“开封王婆”爆火:促成四五十对奥巴马现身唐宁街 黑色着装引猜测考生莫言也上北大硕士复试名单了德国打算提及普京时仅用姓名天水麻辣烫把捣辣椒大爷累坏了

两个鬼故事 XML地图 TXT地图 虚拟主机 SEO 网站制作 网站优化