美文网首页
shell中三种引用方式的区分

shell中三种引用方式的区分

作者: jere觅 | 来源:发表于2015-10-25 22:13 被阅读0次

学习了shell的展开方式后,我认识到shell 提供了一种叫做引用的机制,来有选择地禁止不需要的展开。
首先是引用的第一种类型,双引号。如果你把文本放在双引号中,shell 使用的特殊字符,除了 $,\ (反斜杠),和 ‘(倒引号)之外,则失去它们的特殊含义,被当作普通字符来看待。这意味着单词分割,路径名展开,波浪线展开和花括号展开都被禁止,然而参数展开,算术展开,和命令替换仍然执行。使用双引号,我们可以处理包含空格的文件名。阻止单词分割,得到期望的结果;进一步,我们甚至可以修复破损的文件名。
单词分割被禁止,内嵌的空格也不会被当作界定符,它们成为参数的一部分。一旦加上双引号,我们的命令行就包含一个带有一个参数的命令。
来看一个有趣的例子:
jeremy@ubuntu:~$ echo $(cal)
十月 2015 日 一 二 三 四 五 六 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31
jeremy@ubuntu:~$ echo "$(cal)"
十月 2015
日 一 二 三 四 五 六
1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 31
其次是单引号,如果需要禁止所有的展开,我们使用单引号。在此注意是禁止所有展开。
以下例子是无引用,双引号,和单引号的比较结果:
jeremy@ubuntu:/tmp/abc$ echo $(ls -l $(which cp)) $((2+5)) $USER {1..3}
-rwxr-xr-x 1 root root 124932 1月 14 2015 /bin/cp 7 jeremy 1 2 3
jeremy@ubuntu:/tmp/abc$ echo "$(ls -l $(which cp)) $((2+5)) $USER {1..3}"
-rwxr-xr-x 1 root root 124932 1月 14 2015 /bin/cp 7 jeremy {1..3}
jeremy@ubuntu:/tmp/abc$ echo '$(ls -l $(which cp)) $((2+5)) $USER {1..3}'
$(ls -l $(which cp)) $((2+5)) $USER {1..3}
最后是转义字符。适用于只想引用单个字符时。我们可以在字符之前加上一个反斜杠,在这个上下文中叫做转义字符。
经常在双引号中使用转义字符,来有选择地阻止展开。使用转义字符来消除文件名中一个字符的特殊含义,是很普遍的。例如,在文件名中可能使用一些对于 shell 来说,有特殊含义的字符。这些字符包括 “$”, ”¡‘, ” ” 等字符。
在文件名中包含特殊字符,你可以这样做:
jeremy@ubuntu:/tmp/abc$ echo $(ls -l $USER)
-rw-rw-r-- 1 jeremy jeremy 0 10月 25 16:28 $USER
jeremy@ubuntu:/tmp/abc$ echo $(ls -l !)
-rw-rw-r-- 1 jeremy jeremy 0 10月 25 12:10 !
jeremy@ubuntu:/tmp/abc$ echo $(ls -l !)
bash: !: event not found
注意在单引号中,反斜杠失去它的特殊含义,它被看作普通字符。

相关文章

  • shell中三种引用方式的区分

    学习了shell的展开方式后,我认识到shell 提供了一种叫做引用的机制,来有选择地禁止不需要的展开。首先是引用...

  • shell 文本命令详解

    shell文本命令详解 shell脚本之间相互引用 shell中可以通过source 或者 . 的方式可以引用另一...

  • 2020-04-24

    -怎样引用变量(就是让系统识别这个变量)? 有两种方式:()适合于shell123实验步骤如下

  • shell基础

    Shell 编程中三种引号的作用 单引号 ‘ ’:其中内容是字符串,没有shell的特殊含义; 双引号“ ”:其中...

  • HDFS上常用的命令(一)

    HDFS shell中三种命令的区别 命令分别是:hadoop fs、hadoop dfs、hdfs dfshad...

  • HADOOP-HDFS(2)

    hdfs使用两种方式:(1)shell命令(2)API编程 shell命令 两种风格:(a)hadoop fs (...

  • day03-文件管理-笔记

    昨天: 1.bash shell 基本的使用方式 2.bash 两种执行方式 ​ 单条 shell脚本 3...

  • Shell 脚本入门: 编写格式和执行方式

    本文要点 Shell 脚本的编写规范 执行Shell 脚本文件的 3 种方式 与 区别 1. Shell 脚本的编...

  • 如何执行Shell脚本

    通常执行shell脚本有两种方式。以脚本/data/shell/test.sh为例: 当前目录的方式执行,进入脚本...

  • ThreadLocal内存泄漏问题

    java对象的四种引用方式 对象的引用方式分:强、软、弱、虚四种 强引用 普通的写法即强引用 当GC回收时,拥有强...

网友评论

      本文标题:shell中三种引用方式的区分

      本文链接:https://www.haomeiwen.com/subject/smcxhttx.html