Linux之变量引用与命令替换

在bash脚本编写中,我们时常需要引用变量与替换命令,为规范操作,现对其做简单的总结说明。


引用

引用就是指将字符串用引用符号括起来,以防止特殊字符被shell脚本解释为其他意义。引用时屏蔽特殊字符的特殊意义,而将其解释为字面意义。

引用符、名称、意义说明表

引用符 名称 意义说明
‘‘ 单引号 称全引用或弱引用,引用所有的字符;单引号中字符除单引号本身之外都解释为字面意义,单引号不具备引用变量的功能。。单引号用于保持引号内所有字符的字面值,即使引号内的\和回车也不例外。
"" 双引号 称部分引用或强引用,引用除美元符号($)、反引号(`)和反斜线(\)之外的所有字符。即在双引号中保持美元符号($)、反引号(`)和反斜线(\)符号的特殊含义,如"$变量名"表示以变量值替换变量名。利用双引号引用变量能够防止字符串分割,保留变量中的空格。
`` 反引符 shell把反引符中的内容解释为系统命令
\ 反斜杠 转意符,屏蔽下一个字符的特殊意义,Linux常用的特殊字符有$、*、`、+、^、&、|、"、?

举例:[[email protected] tmp]# test="x   y      z";echo ‘$test‘

[[email protected] tmp]# $test       #不会转意,单引号只把其里面的字符的字面意义直接进行输出

[[email protected] tmp]#  test="x   y      z";echo $test

[[email protected] tmp]#  x  y  z           #引用变量值,但不保留变量中的空格

[[email protected] tmp]#  test="x   y      z";echo “$test”

[[email protected] tmp]#  x   y      z      #引用变量值,并保留变量中的空格

注意:一个变量的值可以作为某个长字符串中的一部分.如果它在长字符串的末尾,就可直接引用,如果在开头或中间,应该用花括号将该变量括起来。

         举例:[[email protected] tmp]# test="xyz";echo test$test

[[email protected] tmp]# testxyz           #正常输出

               [[email protected] tmp]# test="xyz";echo $testtest

[[email protected] tmp]#     #不会有任何输出,因shell会去引用变量testtest的值,可该变量并没有定义赋值

               [[email protected] tmp]# test="xyz";echo ${test}test

[[email protected] tmp]# xyztest     #正常输出

命令替换

命令替换是指将命令的标准输出作为值赋给某个变量,bash Shell定义了两种形式进行命令的替换,两种形式的语法格式如下:

方式一: `Linux命令`

方式二: $(Linux命令)

         举例:[[email protected] tmp]# echo `pwd`

[[email protected] tmp]# /tmp           #引用pwd命令的执行结果并输出

      注意:尽管$()和反引号在命令替换上是等价的,但是,$()形式的命令替换是可以嵌套的

bash Shell中,反引号与$()在处理双反斜线符号时存在区别。

[[email protected] tmp]#echo \\

[[email protected] tmp]#\            #输出转义符

[[email protected] tmp]#echo `echo \\`

[[email protected] tmp]#              #输出空白行

[[email protected] tmp]##echo $(echo \\)

[[email protected] tmp]#\             #输出单斜线

时间: 2024-07-30 13:47:44

Linux之变量引用与命令替换的相关文章

linux基础篇-13,命令替换$()

[[email protected] ~]# echo it is the time $(clock) it is the time 2016年11月10日 星期四 18时20分38秒 -0.327027 seconds 命令替换 [[email protected] ~]# touch ./file-$(date +%F-%H-%M-%S).txt [[email protected] ~]# touch ./file-$(date +%F-%H-%M-%S).txt [[email prot

Linux Shell变量引用及作用范围

变量引用 变量范围 默认只在自己的shell范围内. export功能 让子进程访问父进程的变量 删除变量 原文地址:https://www.cnblogs.com/Brake/p/12274722.html

Linux基础知识及常用命令

基础知识点:1.描述计算机的组成及其功能.2.按系列罗列Linux的发行版,并描述不同发行版之间的联系与区别.3.描述Linux的哲学思想,并按照自己的理解对其进行解释性描述.4.说明Linux系统上命令的使用格式:详细介绍ifconfig.echo.tty.startx.export.pwd.history.shutdown.poweroff.reboot.hwclock.date命令的使用,并配合相应的示例来阐述.5.如何在Linux系统上获取命令的帮助信息,请详细列出,并描述man文档的章

03 Linux系统组成和获取命令帮助

远程连接: ssh协议:(简称:secure shell)   ~]# ss -tnl 查看系统监听于rcp协议的22号端口 ~]# ifconfig 或 ip addr list 查看本机 ip 地址 在CentOS 7最小化安装中没有 ifconfig 这个命令,需要 yum install net-tools 命令来进行下载安装 确保防火墙处于关闭状态: ~]# iptables -L -n   #查看一些防火墙规则 ~]# iptables -F #临时清空防火墙的规则 CentOS 7

Linux Gvim shell 替换:变量替换,命令替换,转义字符

替换:如果表达式中含有特殊字符,shell会进行替换.例如在双引号中使用变量就是一种替换.转义字符也是一种替换 #!/bin/bash a=10 echo -e "Value of a is ${a} \n" #-e表示对转义字符替换,不加的话输出如下# echo "Value of a is ${a} \n" 转义字符替换 下列转义字符可用于echo 1.       \\     反斜杠        2.    \a     警报,响铃 ?3.   \b  

linux常用命令-命令行编辑,history,命令行快捷键,pstree,alias,命令替换,通配符

命令行编辑:光标跳转: Ctrl+a:跳到命令行首 Ctrl+e:跳到命令行尾 Ctrl+u: 删除光标至命令行首的内容 Ctrl+k: 删除光标至命令行尾的内容 Ctrl+l: 清屏 Ctrl+d: 删除光标后面内容 命令历史:查看命令历史:history -c:清空命令历史 -d OFFSET [n]: 删除指定位置的命令 -w:保存命令历史至历史文件中 环境变量PATH:命令搜索路径HISTSIZE: 命令历史缓冲区大小 命令历史的使用技巧:!n:执行命令历史中的第n条命令: [[emai

linux学习记录-命令替换-通配符-重定向-管道

命令替换:$(command),`command` touch ./file-$(date +%F-%H-%M_%S).txt bash支持的引号有三种: ``:命令替换 "":弱引用,可以实现变量替换 '':强引用,不完成变量替换 文件名通配 globbing * 任意长度的任意字符 ? 任意长度单个 [] 匹配指定范围内的任意单个字符 [^] 匹配范围外的 > 覆盖 >> 追加输出 -C 禁止对已经存在文件使用覆盖重定向 强制覆盖输出,则使用>| +C 关闭

关于Shell中命令替换$(...)与后置引用`...`的不同

命令替换 在bash中,$( )与` `(反引号)都是用来作命令替换的.命令替换与变量替换差不多,都是用来重组命令行的,先完成引号里的命令行,然后将其结果替换出来,再重组成新的命令行. $( )与`` 在操作上,这两者都是达到相应的效果,但是建议使用$( ),理由如下: ``很容易与''搞混乱,尤其对初学者来说. 在多层次的复合替换中,``必须要额外的跳脱处理(反斜线),而$( )比较直观. 最后,$( )的弊端是,并不是所有的类unix系统都支持这种方式,但反引号是肯定支持的. # 将cmd1

Linux命令行--使用linux环境变量(转)

5.1 什么时环境变量 bash shell用一个成为环境变量的特性来存储有关的shell回话和工作环境的信息,这是它们成为环境变量的原因.它允许你在内存中存储数据,以便运行在账户.系统.shell的特性以及任何其他你需要存储的数据 环境变量的分类 全局变量 局部变量 5.1.1 全局环境变量 全局环境变量不仅对shell会话可见,而且对所有shell创建的子进程也可见,局部变量只是对创建的他们的shell可见 这对全局环境变量对那些子进程中需要获得父进程信息的程序来说非常有用 系统环境变量一律