Shell programming 8


机制决定了特性,这是独有的。


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

文章作者: Enomothem
版权声明: 本博客所有文章除特别声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 Enomothem !
  目录