shell基础(6):不同程度消除元字符的特殊含义:转义、引用;命令输出赋给变量:命令替换

本文介绍:
转义:引用的一种:可以消除元字符的特殊含义
了解引用:部分引用:保留原生的字符形式;全引用:消除元字符的作用
命令替换:可以将命令的标准输出作为值赋给某个变量。命令输出赋值:$()、变量输出:${}。

一. 转义

shell中有两类字符:普通字符、元字符:具有特殊含义,在使用时用作特殊功能,比如$。
为了消除元字符的特殊含义,需要进行转义。

转义:在元字符前面添加"\",反斜杠。

#试图打印“$Dollar”字符串的错误演示
[root@localhost ~]# echo $Dollar                 
---> 此处打印为空,因为Shell尝试打印出变量Dollar的值,但是这个变量并没有声明,所以打印空行#使用转义字符转义$字符
[root@localhost ~]# echo \$Dollar
$Dollar
#更多的例子
#打印乘号。如果不用转义符转义*号,则*号会作为一般的通配符使用,结果是将工作目录中的所有目录和文件名替换它
[root@localhost ~]# echo 8 \* 8 =64
8 * 8 =64
#句子中含有引号。如果不用转义符转义'单引号,则Shell会等待出现另一个单引号才能结束echo进程
[root@localhost ~]# echo john\'s cat
john's cat

 

二. 引用

简介:

引用是将字符串用某种符号括起来,以防止特殊字符被解析为其他意思。
一共有四种引用符:双引号,单引号,反引号(`)和转义符(\)

部分引用

指使用双括号括起来的引用,其中$符,反引号(`),转义符\,仍然会被解析为特殊意义。

bash-3.2$ VAR04="A   B   C"
#直接打印变量时,输出内容只保留了每个字母间一个空格
bash-3.2$ echo $VAR04
A B C
bash-3.2$ echo "$VAR04"
A   B   C

注意:使用双引号扩起的输出内容和变量定义时的内容完全一致。

 

全引用

指单引号括起来的引用,单引号中任何字符都被当作普通字符,但是单引号中不能再使用单引号。

[root@localhost ~]# echo '$VAR03'
$VAR03

如果全引用括起的字符串中还含有单引号,就会出现问题,因为Shell无法区分哪个单引号是引用的结束符。有以下两种方式解决

[root@localhost ~]# echo 'It'\''s a dog'
It's a dog
[root@localhost ~]# echo "It's a dog"
It's a dog

 

三. 命令替换

指将命令的标准输出作为值赋给某个变量。

Shell中有两种方式可以完成命令替换,一种是反引号(`),一种是$(),使用例子如下:

[root@tbds-10-1-0-38 log]# var_time=$(date)
[root@tbds-10-1-0-38 log]# var_time=`date`
#使用变量通过 ${变量名}
[root@tbds-10-1-0-38 log]# echo ${var_time}
Mon Oct 12 19:48:33 CST 2020

换行保留

[root@tbds-10-1-0-38 log]# var_logs_name=$(ll)
[root@tbds-10-1-0-38 log]# echo ${var_logs_name}
total 90320 -rw-r--r-- 1 tbds tbds 61253302 Oct 12 19:57 application.log -rw-r--r-- 1 tbds tbds 0 Sep 26 00:29 audit.log -rw-r--r-- 1 tbds tbds 507 Oct 12 11:21 boot.log -rw-r--r-- 1 tbds tbds 1096 Sep 28 12:07 dataexploit.log -rw-r--r-- 1 tbds tbds 31199786 Oct 12 19:57 error.log drwxr-xr-x 4 tbds tbds 4096 Oct 2 00:00 history -rw-r--r-- 1 root hadoop 75 Oct 12 19:10 nameSpace1.sh -rw-r--r-- 1 root hadoop 130 Oct 12 19:25 nameSpace2.sh

[root@tbds-10-1-0-38 log]# var_logs_name=$(ll)
[root@tbds-10-1-0-38 log]# echo "${var_logs_name}"
total 90320
-rw-r--r-- 1 tbds tbds   61254541 Oct 12 19:57 application.log
-rw-r--r-- 1 tbds tbds          0 Sep 26 00:29 audit.log
-rw-r--r-- 1 tbds tbds        507 Oct 12 11:21 boot.log
-rw-r--r-- 1 tbds tbds       1096 Sep 28 12:07 dataexploit.log
-rw-r--r-- 1 tbds tbds   31199786 Oct 12 19:57 error.log
drwxr-xr-x 4 tbds tbds       4096 Oct  2 00:00 history
-rw-r--r-- 1 root hadoop       75 Oct 12 19:10 nameSpace1.sh
-rw-r--r-- 1 root hadoop      130 Oct 12 19:25 nameSpace2.sh

 

嵌套使用

$()支持嵌套,``:不支持嵌套。
$()仅在bash shell中有效,反引号在多种UNIX Shell中都可使用

lianggao@bogon Downloads % Fir_File_Lines=$(wc -l $(ls | sed -n '1p'))
lianggao@bogon Downloads % echo ${Fir_File_Lines}
352 capacity-scheduler.xml

 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

roman_日积跬步-终至千里

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值