本文介绍:
转义:引用的一种:可以消除元字符的特殊含义
了解引用:部分引用:保留原生的字符形式;全引用:消除元字符的作用
命令替换:可以将命令的标准输出作为值赋给某个变量。命令输出赋值:$()、变量输出:${}。
文章目录
- 一. 转义
- 二. 引用
- 部分引用
- 全引用
- 三. 命令替换
一. 转义
shell中有两类字符:普通字符、元字符:具有特殊含义,在使用时用作特殊功能,比如$。
为了消除元字符的特殊含义,需要进行转义。
转义:在元字符前面添加"\",反斜杠。
#试图打印“$Dollar”字符串的错误演示[root@localhost ~]# echo $Dollar--->此处打印为空,因为Shell尝试打印出变量Dollar的值,但是这个变量并没有声明,所以打印空行#使用转义字符转义$字符[root@localhost ~]# echo \$Dollar$Dollar#更多的例子#打印乘号。如果不用转义符转义*号,则*号会作为一般的通配符使用,结果是将工作目录中的所有目录和文件名替换它[root@localhost ~]# echo 8 \* 8 =648*8=64#句子中含有引号。如果不用转义符转义'单引号,则Shell会等待出现另一个单引号才能结束echo进程[root@localhost ~]# echo john\'s catjohn'scat二. 引用
简介:
引用是将字符串用某种符号括起来,以防止特殊字符被解析为其他意思。
一共有四种引用符:双引号,单引号,反引号(`)和转义符(\)。
部分引用
指使用双括号括起来的引用,其中$符,反引号(`),转义符\,仍然会被解析为特殊意义。
bash-3.2$VAR04="A B C"#直接打印变量时,输出内容只保留了每个字母间一个空格bash-3.2$echo$VAR04A 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 Oct1219:48:33 CST2020换行保留
[root@tbds-10-1-0-38log]# var_logs_name=$(ll)[root@tbds-10-1-0-38log]# echo ${var_logs_name}total90320-rw-r--r--1tbds tbds61253302Oct1219:57application.log-rw-r--r--1tbds tbds0Sep2600:29audit.log-rw-r--r--1tbds tbds507Oct1211:21boot.log-rw-r--r--1tbds tbds1096Sep2812:07dataexploit.log-rw-r--r--1tbds tbds31199786Oct1219:57error.log drwxr-xr-x4tbds tbds4096Oct200:00history-rw-r--r--1root hadoop75Oct1219:10nameSpace1.sh-rw-r--r--1root hadoop130Oct1219:25nameSpace2.sh[root@tbds-10-1-0-38log]# var_logs_name=$(ll)[root@tbds-10-1-0-38log]# echo"${var_logs_name}"total90320-rw-r--r--1tbds tbds61254541Oct1219:57application.log-rw-r--r--1tbds tbds0Sep2600:29audit.log-rw-r--r--1tbds tbds507Oct1211:21boot.log-rw-r--r--1tbds tbds1096Sep2812:07dataexploit.log-rw-r--r--1tbds tbds31199786Oct1219:57error.log drwxr-xr-x4tbds tbds4096Oct200:00history-rw-r--r--1root hadoop75Oct1219:10nameSpace1.sh-rw-r--r--1root hadoop130Oct1219:25nameSpace2.sh嵌套使用
$()支持嵌套,``:不支持嵌套。
$()仅在bash shell中有效,反引号在多种UNIX Shell中都可使用
lianggao@bogon Downloads%Fir_File_Lines=$(wc-l $(ls|sed-n'1p'))lianggao@bogon Downloads%echo ${Fir_File_Lines}352capacity-scheduler.xml