linux变量中代,linux中shell变量$#,$@,$0,$1,$2和变量${0%/*}
一直傻傻搞不清,还是梳理一下吧。
linux中shell变量$#,$@,$0,$1,$2的含义解释:
变量说明:
$$
Shell本身的PID(ProcessID)
$!
Shell最后运行的后台Process的PID
$?
最后运行的命令的结束代码(返回值)
$-
使用Set命令设定的Flag一览
$*
所有参数列表。如"$*"用「"」括起来的情况、以"$1 $2 … $n"的形式输出所有参数。
$@
所有参数列表。如"$@"用「"」括起来的情况、以"$1" "$2" … "$n" 的形式输出所有参数。
$#
添加到Shell的参数个数
$0
Shell本身的文件名
$1~$n
添加到Shell的各参数值。$1是第1参数、$2是第2参数…。
如果直接在命令行echo $0,则打印的是当前运行的shell名,(如ksh,bash,csh);如果在脚本中,$0表示脚本名称或函数名称;
那么
${0%/*}和${0##/*}代表什么?
${0%/*}
以例子来表述:
新建一个目录——mkdir -p /usr/school/grade/class/
新建一个文件——touch /usr/school/grade/class/student
在student文件里写上代码并保存——
echo $0
echo ${0#*/}
echo ${0##*/}
运行代码—— sh /usr/school/grade/class/student
我们会得到三个结果分别是
/usr/school/grade/class/student
usr/school/grade/class/student
student
这个时候再来讲解那三条指令
$0,$1,$2 前面有一个$美元符号的,都象征着变量,而$0象征本身shell脚本文件的名字,也就是 /usr/school/grade/class/student
最右边的 / ,象征着你要寻找,你要匹配的东西,在哪里找呢?在文件名字 /usr/school/grade/class/student 里面找
#象征要寻找最左边的/
##象征要寻找最右边的/
而*是通配符,象征着任意长度的字符串
所以在##条件下的 */ , 就象征着/usr/school/grade/class/这一段
找到了这一段之后,就把它截取,扔掉,剩下的就是student这个文件名字
所以 ${0##*/} 的作用是寻找一个路径下的具体文件名字
/usr/school/grade/class/student,就得到 student
${0%/*}##
#是从左边头部开始寻找起,%是从尾部开始寻找起(If the pattern matches a trailing portion)
${0%/*} 这个命令,对于/usr/school/grade/class/student,从右边找起,得到是 /student 这个部分,然后扔掉
如果是${0%%/*},找到的就是 /usr/school/grade/class/student
综上所述
对于同一个文件 /usr/school/grade/class/student
${0%/*}得到前面/usr/school/grade/class
${0##*/}得到的是后面 student
最新文章
- 关于java.util.LinkedHashMap cannot be cast to ......的解决办法
- sparkSQL1.1入门之二:sparkSQL执行架构
- 新品【国内动态】服务器列表
- 北斗导航 | 卫星导航在动态监测中的应用(RTK)
- php函数删除非空目录,删除文件夹(非空目录)及其中所有文件的思路及源代码
- 不存在从node到node*的适当转换函数_C++构造函数和初始化表
- tomcat使用manager GUI应用和script分别reload应用的注意事项
- php编写大型网站问题集
- 特斯拉中国工厂2020投产,还可能为完全自动驾驶更新硬件
- python urllib3 使用_使用Python URLLIB3下载文件
- 40_ZYNQ7020开发板RS485协议通信
- handbrake下载太慢_handbrake使用教程
- 常州市行政地图矢量高清pdf区划彩色大图cdr或ai2020年
- Java中Number类详解
- UI设计培训之用户画像-带你认清的你的用户
- 资产监测设备中法国配置工具介绍(二)
- 为什么手机玩我的世界进服务器会显示红字,LOL进去时显示的蓝红标志是什么 | 手游网游页游攻略大全...
- 如何更新neovim以及安装指定版本
- java课程设计纸牌游戏_java练习项目之纸牌游戏实例源码
- buildroot的使用简介
热门文章
- php需要什么技能,成为一个好的PHP工程师需要掌握什么技能
- 连接端口 配置hive_Zeppelin带有Kerberos认证的Hive解释器的配置
- docker mysql 日志_docker中将MySQL运行在容器中失败提示“ InnoDB : Error 22 with aio_write”的解决办法...
- docker mysql编辑器_docker官方mysql镜像自定义配置详解
- oracle激活锁定用户,oracle 锁用户,oracle解除用户锁定
- QM法化简C语言程序,QM基础教程
- 一、史上最强hadoop分布式集群的搭建
- 十九、抓包利器Charles的使用
- 十一、深入JavaScript的定时器(七)
- 中科院自动化所:最新视觉-语言预训练综述