Bash引用变量和转义




-----------------------------------------------------------------Sun-------------------------------------------------------------------


一、引用变量


    在一个双引号中通过直接使用变量名的方法来引用变量,一般情况下都是没问题的。这么做将

阻止所有在引号中的特殊字符被重新解释(即都被当作普通的字符串),包括变量名,但是 $、`(后置引用)

和 "\"(转义符)除外。保留 $ 作为特殊字符的意义是为了能够在双引号中也能够正常的引用变量("$variable")。

使用双引号还能够阻止单词分割,即使这个参数包含有空白,单词也不会被分隔开。如 variable1="a variable containing five words"

#!/bin/bash

var="(]\\{}\$\""

echo $var
echo "$var"

IFS='\'
echo $var
echo "$var"
echo '$var'

结果为: (]\{}$"
                 (]\{}$"
                 (] {}$"        // \字符被空白符替换了!!!
                 (]\{}$"        // 用了双引号的则没有!
                  $var         // 单引号不允许引用变量


IFS(Internal Field Seperator)在Linux的shell中预设的分隔符。设置了bash内置变量IFS后,再使用echo输出时,会将所设定的

字符用空格去代替。


二、转义

转义是一种引用单个字符的方法。一个前面放上转义符(\)的字符就是告诉shell 这个字符按照字面的意思进行解释,换句话

说,就是这个字符失去了它的特殊含义。

符号说明
\n表示新的一行
\r表示回车
\t表示水平制表符
\v表示垂直制表符
\b表示后退符
\a表示"alert"(蜂鸣或者闪烁)
\0xx转换为八进制的ASCII码, 等价于0xx
\"表示引号字面的意思


echo "\"hello\",he said."
echo "\$var"
echo "\\"

结果: "hello",he said.
              $var
              \

#!/bin/bash                # -e 打印转义符

echo "\v\v\v\v"           # \v\v\v\v

echo -e "\v\v\v\v"       #竖直制表符

echo -e  "\042"           # "  8进制的ASCII下,42是 "

echo $'\n'                   # \n
echo $'\t \042 \t'        # "
echo $'\t \x22 \t'        # "
    效果如图。


1.赋值给变量的字符串的元素也会被转义,但是不能把一个单独的转义符赋值给变量。


2.转义一个空格会阻止命令行参数列表的“单词分割”问题。

    

3.转义符也提供续行功能,也就是编写多行命令的功能。

每一个单独行都包含一个不同的命令,但是每行结尾的转义符都会转义换行符,这样下一行会与上一行一起形成一个命令序列

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值