返回顶部
首页 > 资讯 > 操作系统 >Shell脚本中$符号的几种用法小结
  • 491
分享到

Shell脚本中$符号的几种用法小结

Shell$ 2022-06-04 23:06:59 491人浏览 安东尼
摘要

目录shell脚本中$符号的几种用法1.1 引用变量1.2 引用脚本或函数参数1.3 上条命令的返回值1.4 执行并获取命令输出1.5 表达式求值1.6 获取当前进程 ID1.7 后台运行的最后一个进程 ID1.8 获取

目录
  • shell脚本中$符号的几种用法
    • 1.1 引用变量
    • 1.2 引用脚本或函数参数
    • 1.3 上条命令的返回值
    • 1.4 执行并获取命令输出
    • 1.5 表达式求值
    • 1.6 获取当前进程 ID
    • 1.7 后台运行的最后一个进程 ID
    • 1.8 获取 Shell 选项
  • shell中$(( ))、$( )、``与${ }的区别
    • (1)$( )与``(反引号):返回括号中命令的结果
    • (2)${ }变量替换

最近在学习Shell,发现还有一些知识点需要巩固,这里写出来,加深下印象。

通常情况下,在工作中用的最多的有如下几项:

XhOMWGWDU
$ 符号 说明
$0 Shell 的命令本身
表示 Shell 的第几个参数
$? 显示最后命令的执行情况
$# 传递到脚本的参数个数
$$ 脚本运行的当前进程 ID 号
$* 以一个单字符串显示所有向脚本传递的参数
$! 后台运行的最后一个进程的 ID 号
$- 显示 Shell 使用的当前选项

Shell脚本中$符号的几种用法

今天将通过以上几种选项并做进一步的操作案例;

1.1 引用变量

引用变量时,使用 $ 符号直接来进行引用,以及包括循环变量;


[root@localhost ~]# x=1024
[root@localhost ~]# echo $x
1024

利用双引号 " 将括起来的字符串支持变量插值。


[root@localhost ~]# x=1024
[root@localhost ~]# echo "x = $x"
x = 1024

使用 ${ } 作为单词边界。


[root@localhost ~]# x=1024
[root@localhost ~]# echo "x = ${x}xy"
x = 1024xy

使用 ${#} 获取变量字符串长度。


[root@localhost etc]# s=helloworld
[root@localhost etc]# echo "s.length = ${#s}"
s.length = 10

1.2 引用脚本或函数参数

基于引用脚本的方式,1 表示 Shell 脚本文件名,n 从 2 开始表示第 n 个参数,第 2 个参数是 $2;


[root@localhost ~]# echo 'echo $1 $2 $3' > ping.sh
[root@localhost ~]# cat ping.sh
echo $1 $2 $3
[root@localhost ~]# sh ping.sh 1 2 3
1 2 3

单引号 '' 括起来的字符串不会进行插值,并使用 $# 获取脚本或函数参数的个数;


[root@localhost ~]# echo 'echo $#' > ping.sh
[root@localhost ~]# sh ping.sh 1 2 3
3

1.3 上条命令的返回值

使用 $? 上条命令的返回值。
0:表示没有错误,其他任何数值:表示有错误。


[root@localhost ~]# true 1024
[root@localhost ~]# echo $?
0
[root@localhost ~]# false 2048
[root@localhost ~]# echo $?
1

1.4 执行并获取命令输出

使用 $() 执行并获取命令输出赋值给变量,等于双引号的功能。


[root@localhost ~]# echo `date`
2016年 06月 05日 星期日 12:39:08 CST
[root@localhost ~]# echo $(date)
2016年 06月 05日 星期日 12:39:34 CST

1.5 表达式求值


[root@localhost ~]# echo $[1024 + 2048]
3072
[root@localhost ~]# expr 1024 + 2048
3072
[root@localhost ~]# a=1024
[root@localhost ~]# b=2048
[root@localhost ~]# echo $[ a + b ]
3072

1.6 获取当前进程 ID

使用 $$ 来进行获取当前进程的 ID 号。


[root@localhost ~]# echo $$
55580

1.7 后台运行的最后一个进程 ID

使用 $! 来进行获取后台运行的最后一个进程 ID。
在命令结尾使用 & 可创建后台进程。


[root@localhost ~]# tail -f /root/ping.sh &
[2] 55848
[root@localhost ~]# echo $!
55848
[root@localhost ~]# kill $!
[root@localhost ~]# echo $!
55848
[2]+ 已终止 tail -f /root/ping.sh

1.8 获取 Shell 选项

使用 $- 来进行获取当前 Shell 的选项。


[root@localhost ~]# echo $-
himBH

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

说明:

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

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

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

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

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

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

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

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

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

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

示例:


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

 # 如果是用反引号,直接引用是不行的,还需要作跳脱处理
cmd3 `cmd2 \`cmd1\``

(2)${ }变量替换

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

示例:

取路径、文件名、后缀

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


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

Shell脚本中$符号的几种用法小结

记忆方法如下:

  • # 是去掉左边(在键盘上 # 在 $ 之左边)
  • % 是去掉右边(在键盘上 % 在 $ 之右边)
  • 单一符号是最小匹配;两个符号是最大匹配
  • *是用来匹配不要的字符,也就是想要去掉的那部分

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

Shell脚本中$符号的几种用法小结

Shell脚本中$符号的几种用法小结

Shell脚本中$符号的几种用法小结

到此这篇关于Shell脚本中''$''符号的几种用法小结的文章就介绍到这了,更多相关Shell '$'符号用法内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

--结束END--

本文标题: Shell脚本中$符号的几种用法小结

本文链接: https://lsjlt.com/news/21343.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • Shell脚本中$符号的几种用法小结
    目录Shell脚本中$符号的几种用法1.1 引用变量1.2 引用脚本或函数参数1.3 上条命令的返回值1.4 执行并获取命令输出1.5 表达式求值1.6 获取当前进程 ID1.7 后台运行的最后一个进程 ID1.8 获取...
    99+
    2022-06-04
    Shell $
  • Shell脚本中$符号的嵌套使用方法小结
    目录1 示例2 说明本文主要介绍在编写 Shell 脚本时,通过嵌套使用 $ 符号,间接获取变量或表达式的值的具体方法。 先说结论,在 Shell 脚本中,可以通过使用 eval 命令来实现 $ 符号的嵌套使用...
    99+
    2023-05-06
    Shell $符号嵌套 Shell $符号
  • 详解Shell 脚本中 “$” 符号的多种用法
    通常情况下,在工作中用的最多的有如下几项: $0:Shell 的命令本身 1到9:表示 Shell 的第几个参数 $? :显示最后命令的执行情况 $#:传递到脚本的参数个数 $$:脚本运行的...
    99+
    2022-06-04
    Shell $
  • shell脚本中 /dev/null 的用法小结
    /dev/null 是一个特殊的设备文件,它丢弃一切写入其中的数据 可以将它 视为一个黑洞, 它等效于只写文件, 写入其中的所有内容都会消失, 尝试从中读取或输出不会有任何结果,同样,/dev/null 在命令行和脚本中...
    99+
    2022-06-04
    shell脚本dev/null shell脚本dev/null作用
  • Shell脚本数组用法小结
    array作为一种数据结构,在一些高级语言中都是有直接提供和实现的,当然我shell中也是有的哈。 PS:写这篇文章的原因是B哥在群里发了一个截图: 我大B哥依然是全能型人才哈。。。废话少说,说下正题 1、...
    99+
    2022-06-04
    数组 小结 脚本
  • shell脚本中$符号的命令用法介绍
    这篇文章主要讲解了“shell脚本中$符号的命令用法介绍”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“shell脚本中$符号的命令用法介绍”吧!   关于$符号,大家肯定...
    99+
    2023-06-09
  • Shell脚本8种字符串截取方法总结
    Linux 的字符串截取很有用。有八种方法。 假设有变量 var=http://www.aaa.com/123.htm. 1. # 号截取,删除左边字符,保留右边字符。 echo ${var#*//} ...
    99+
    2022-06-04
    字符串 脚本 方法
  • Shell脚本去重的几种方法实例
    测试文件 [root@bogon ~]# cat >test jason jason jason fffff jason 按 Ctr + D保存 1、sort -u [root@bog...
    99+
    2022-06-04
    脚本 实例 几种方法
  • “$” 符号如何在Shell 脚本中使用
    “$” 符号如何在Shell 脚本中使用?相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。通常情况下,在工作中用的最多的有如下几项:$0:Shell 的命令本身1到9:表示 She...
    99+
    2023-06-09
  • shell脚本中字符串截取的多种方法
    1.#号截取,删除左边字符,保留右边字符。        代码:echo ${var#*//}    &n...
    99+
    2024-04-02
  • shell脚本中$符号的命令使用汇总
        今天是远程办公的第4天,渐渐的找到了一点在家办公的节奏了,改了几个shell脚本,在改动过程中,发现还有一些知识点需要巩固,这里写出来,加深下印象。    关于$...
    99+
    2022-06-04
    shell $ shell $命令
  • shell脚本中一些特殊符号
    在shell中常用的特殊符号罗列如下: # ; ;; . , / \ 'string'| ! $ ${} $? $$ $* "string"* ** ? : ^ $# $@ `command...
    99+
    2022-06-04
    脚本 特殊符号 shell
  • 反弹shell的几种姿势小结
    目录linux 反弹shell Windows反弹shell在渗透过程中,往往因为端口限制而无法直连目标机器,此时需要通过反弹shell来获取一个交互式shell,以便继续深入。 反弹shell是打开内网通道的...
    99+
    2022-06-04
    反弹shell
  • Shell脚本中管道的几种使用实例讲解
    管道经常用于拼接命令,通过管道可以执行一些复杂的数据处理操作。以下为在shell中使用管道处理数据的的几个实例 示例1:生成一个8位的随机密码 tr -dc A-Za-z0-9_ </dev/urandom |...
    99+
    2022-06-04
    shell脚本管道 shell脚本管道的使用 shell脚本中管道的几种使用实例讲解
  • Shell脚本中的数组用法总结
    这篇文章主要讲解了“Shell脚本中的数组用法总结”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Shell脚本中的数组用法总结”吧!1、怎么声明一个数组变量?直接赋值:代码如下:array[...
    99+
    2023-06-09
  • Linux Shell中几种括号和引号的用法介绍
    本篇内容介绍了“Linux Shell中几种括号和引号的用法介绍”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!Shell 脚本中经常需要用到...
    99+
    2023-06-16
  • shell脚本批量创建用户的方法小结
    目录shell脚本批量创建用户基本操作附:用shell脚本批量创建50个用户并设置密码,批量删除用户总结shell脚本批量创建用户基本操作 案例:批量创建user01 ~ user20 一共二十个文件,密码为随机的六位数...
    99+
    2022-06-04
    shell创建批量用户 linux如何批量创建用户 shell脚本创建用户
  • shell脚本中有哪些特殊符号
    这篇文章主要讲解了“shell脚本中有哪些特殊符号”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“shell脚本中有哪些特殊符号”吧!在shell中常用的特殊符号罗列如下:# ; ;; . ,...
    99+
    2023-06-09
  • Shell脚本字符串截取方法总结
    本篇内容介绍了“Shell脚本字符串截取方法总结”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!假设有变量 var=http://www.aa...
    99+
    2023-06-09
  • Shell脚本中计算字符串长度的5种方法
    有时在Linux操作系统中需要计算某个字符串的长度,通过查询资料整理了下目前Shell中获取字符串的长度的多种方法,在这里分享给大家,方法如下: 方法1: 使用wc -L命令 wc -L可以获取到当前行的长...
    99+
    2022-06-04
    种方法 字符串 脚本
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作