Bash引用变量和转义

来源:互联网 发布:网络兼职项目 编辑:程序博客网 时间:2024/04/30 09:44




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


一、引用变量


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

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

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

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

#!/bin/bashvar="(]\\{}\$\""echo $varecho "$var"IFS='\'echo $varecho "$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\vecho -e "\v\v\v\v"       #竖直制表符echo -e  "\042"           # "  8进制的ASCII下,42是 "echo $'\n'                   # \necho $'\t \042 \t'        # "echo $'\t \x22 \t'        # "
    效果如图。


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


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

    

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

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

1 0
原创粉丝点击