机制决定了特性,这是独有的。
SHELL=[ 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 , 9 , 10 ]
progress:[################ ] 80%
Ax Shell Quoting Mechanisms | 机制
这一章讨论引用机制,从元字符开始。
The Metacharacters | 元字符
shell中提供了各种特殊的元字符,如果不引用起来,就会报错。
比如, ? 在匹配目录下的文件中匹配单个字符。 ***** 匹配多个字符。下面是元字符的列表 −
* ? [ ] ' " \ $ ; & ( ) | ^ < > new-line space tab
使用\来代表自身。
例
如何打印 ***** 或 ?
#!/bin/sh
echo Hello; Word
执行 −
Hello
./test.sh: line 2: Word: command not found
shell returned 127
使用反斜杠转义 −
#!/bin/sh
echo Hello\; Word
执行,正常输出了 −
Hello; Word
**$**也是特殊元字符,需要使用引号引起来。
#!/bin/sh
echo "I have \$1200"
执行 −
I have $1200
四种引用形式 −
Sr.No. | Quoting & Description |
---|---|
1 | Single quote | 单引号 所有失去意义 |
2 | Double quote | 双引号 大部分失去意义 除某些字符($`$\‘\“\\) |
3 | Backslash | 反斜杠 跟着反斜杠的失去意义 |
4 | Back quote | 反引号 当作命令执行 |
The Single Quotes | 单引
如果存在一个很多特殊符号的情况 −
echo <-$1500.**>; (update?) [y|n]
在每个字符前加上反斜杠是很繁琐的 −
echo \<-\$1500.\*\*\>\; \(update\?\) \[y\|n\]
加上单引号,轻轻松松解决 −
echo '<-$1500.**>; (update?) [y|n]'
如果需要输出单引号,可以使用反斜杠。
echo 'It\'s Shell Programming
The Double Quotes | 双引
如果执行下面这个脚本使用单引号 −
VAR=ZARA
echo '$VAR owes <-$1500.**>; [ as of (`date +%m/%d`) ]'
执行 −
$VAR owes <-$1500.**>; [ as of (`date +%m/%d`) ]
会发现变量也被转义了,命令没有执行,这不是我们想看到的 −
VAR=ZARA
echo "$VAR owes <-\$1500.**>; [ as of (`date +%m/%d`) ]"
使用双引号可以允许这些特殊的元字符生效 −
ZARA owes <-$1500.**>; [ as of (07/02) ]
双引号支持的元字符有这些 −
- $ 参数的替换
- 反引号命令执行
- \$ 输出美元符
- \` 输出反引号
- \“ 双引号
- *\\* 输出双引号
- 所有其它反斜杠的字符都是文字,没有特殊
The Backquotes | 反引
当作命令执行
语法
var=`command`
例
输出时间,使用date
命令.
DATE=`date`
echo "Current Date: $DATE"
执行 −
Current Date: Thu Jul 2 05:28:45 MST 2009