美文网首页
2021-09-15Linux中的$符号的三种常见用法

2021-09-15Linux中的$符号的三种常见用法

作者: __一蓑烟雨__ | 来源:发表于2021-09-15 19:20 被阅读0次

本文总结了Linux中的$符号的各种用法

用法一:

显示脚本参数(0、?、*、@、#、$$、!)(本质上属于变量替换)

0:就是该bash文件名,个位数的,可直接使用数字,但两位数以上,则必须使用 {} 符号来括住,如{10}.

$?:是上一指令的返回值,成功是0,不成功是1。一般来说,UNIX(linux) 系统的进程以执行系统调用exit() 来结束的。这个回传值就是status值。回传给父进程,用来检查子进程的执行状态。一般指令程序倘若执行成功,其回传值为 0;失败为 1。

$*:所有脚本参数的内容:就是调用调用本bash shell的参数。

@:基本上与上面相同。只不过是“*”返回的是一个字符串,字符串中存在多外空格。 “$@”返回多个字符串。

$#:返回所有脚本参数的个数。

$$ :Shell本身的PID(ProcessID),即当前进程的PID。

$! :Shell最后运行的后台Process的PID

$- :使用Set命令设定的Flag一览

示例:

touch variable

vi variable

脚本内容如下:

!/bin/sh

echo "number:$#"

echo "scname:$0"

echo "first :$1"

echo "second:$2"

echo "argume:$@"

保存退出

赋予脚本执行权限

chmod +x variable

执行脚本

./variable aa bb

number:2

scname:./variable

first: aa

second:bb

argume:aa bb

通过显示结果可以看到:

$# 是传给脚本的参数个数

$0 是脚本本身的名字

$1是传递给该shell脚本的第一个参数

$2是传递给该shell脚本的第二个参数

$@ 是传给脚本的所有参数的列表

用法二:

获取变量与环境变量的值

如:path=2,则echo path 或者echo{path}显示的就是path的值。

在linux及unix的sh中,以开头的字符串表示的是sh中定义的变量,这些变量可以是系统自动增加的,也可以是用户自己定义的PATH表示的是系统的命令搜索路径,和windows的%path%是一样的$HOME则表示是用户的主目录,也就是用户登录后工作目录

示例:echo $PATH.

用法三:

shell中(( ))、( )、``与${ }的区别

说明:

${ }这种形式其实与用法一和二是一样的,属于变量替换的范畴,只不过在变量替换中可以加上大括号,也可以不加大括号。

简而言之:(( ))属于执行计算公式,等价于[ ],( )和` `属于命令替换,{ }属于变量替换

(1)$( )与``(反引号):返回括号中命令的结果

在bash中,$( )与` `(反引号)都是用来作命令替换的,执行括号或者反引号中的命令。

命令替换与变量替换差不多,都是用来重组命令行的,先完成引号里的命令行,然后将其结果替换出来,再重组成新的命令行

示例:命令:echo today is(date "+%Y-%m-%d"),显示:today is 2014-07-01

注:在操作上,这两者都是达到相应的效果,但是建议使用$( ),理由如下:

    1)``很容易与''搞混乱,尤其对初学者来说。

    2)在多层次的复合替换中,``必须要额外的跳脱处理(反斜线),而$( )比较直观。

最后,$( )的弊端是,并不是所有的类unix系统都支持这种方式,但反引号是肯定支持的。

示例:

      1# 将cmd1执行结果作为cmd2参数,再将cmd2结果作为cmd3的参数

           cmd3 $(cmd2 $(cmd1))

     2 # 如果是用反引号,直接引用是不行的,还需要作跳脱处理

      cmd3 `cmd2 \`cmd1\``

(2)${ }变量替换

一般情况下,var与{var}是没有区别的,但是用${ }会比较精确的界定变量名称的范围

示例:

取路径、文件名、后缀

先赋值一个变量为一个路径,如下:

file=/dir1/dir2/dir3/my.file.txt

记忆方法如下:

是去掉左边(在键盘上 # 在 $ 之左边)

% 是去掉右边(在键盘上 % 在 $ 之右边)

单一符号是最小匹配;两个符号是最大匹配

*是用来匹配不要的字符,也就是想要去掉的那部分

还有指定字符分隔号,与*配合,决定取哪部分

————————————————
版权声明:本文为CSDN博主「木木统」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/weixin_37766087/article/details/99974385

相关文章

  • 2021-09-15Linux中的$符号的三种常见用法

    本文总结了Linux中的$符号的各种用法 用法一: 显示脚本参数(?、@、!)(本质上属于变量替换) {10}. ...

  • 补充学习一|新增问号和叹号使用新规范

    在上一讲中,用浅显易懂的语言,介绍了“常见标点符号的样式、名称及使用方法”,这也是常见标点符号的最基本的用法。 从...

  • js 中的 ?. 符号用法

    这篇介绍了 ?. 运算符来重构或简化代码的一些场景和做法。https://lea.verou.me/2020/06...

  • c++随手记

    作用域符号``::"的三种主要情况 全局作用域符号用法 ::name,name可指代全局变量或者全局函数 类作用域...

  • 21天训练营第六天

    今天主要学习为分类的用法用法 基本用法中包含固定宽度和分隔符号——数据-分裂-固定宽度/分隔符号 进阶用法 关键词...

  • MySQL count(*),count(1),count(fi

    count函数是用来获取表中满足一定条件的记录数,常见用法有三种,count(*),count(1),count(...

  • kotlin中的常见符号

    ?可空类型 表示这个对象可能为空 ?.安全调用符 ?:Elvis 操作符 对于上面的列子当a不为空时返回正常的值,...

  • kotlin中的常见符号

    1.【?,?.,?:,!!,filterNotNull】可空类型与非空类型 【?可空类型】 在 Kotlin 中,...

  • 2019-07-16分列快速提取有效信息

    一、基本用法 1、分隔符号: 数据-分列-选中需要分列的数据-弹出文本分列向导-默认三种分隔符号(分号,逗号,空格...

  • [基础] AHK 中 % 符号的用法

    AHK 中有一个很特别的符号 %。几乎随便从网上下一段 AHK 代码,就可以看到里边有 % 符号,而且 % 在 A...

网友评论

      本文标题:2021-09-15Linux中的$符号的三种常见用法

      本文链接:https://www.haomeiwen.com/subject/yvrlgltx.html