繁体   English   中英

在shell中使用转义字符

Using escape characters in shell

提示:本站收集StackOverFlow近2千万问答,支持中英文搜索,鼠标放在语句上弹窗显示对应的参考中文或英文, 本站还提供   中文繁体   英文版本   中英对照 版本,有任何建议请联系yoyou2525@163.com。

在阅读shell中的Escape characters ,我尝试了一个例子 -

echo“用户$ USER的余额为:\\ $ 5:00”

它给出了输出

用户的余额是:5.00美元

但是,当我尝试使用转义字符\\用制表符\\t或换行符\\n ,它似乎没有工作。 我尝试在双引号中使用它(转义字符在双引号中保留其含义)但它仍然无效。

echo“用户$ USER的余额为:\\ t \\ $ 5:00”

不给出输出

用户的余额是:5:00美元

相反,输出是 -

用户vyadav的余额为:\\ t $ 5:00

2 个回复

如果没有-e选项, echo命令不会扩展反斜杠转义

你可以使用echo -e (请注意,这是一个gnu扩展 ,不是很便携):

echo -e "The balance for user $USER is:\t\$5:00"
The balance for user anubhava is:   $5:00

根据help echo

-e  enable interpretation of the following backslash escapes

或者更好地使用printf

printf "The balance for user %s is:\t\$%s\n" "$USER" "5:00"

要么

printf 'The balance for user %s is:\t$%s\n' "$USER" "5:00"

The balance for user anubhava is:   $5:00

有什么样的差异\\$是做什么\\t在做什么。

shell在看到$时会在双引号字符串中扩展变量,所以你需要从shell中“转义” $ (这就是\\$正在做的事情)。 您还可以使用不扩展变量的单引号。

\\t另一方面是“反斜杠逃逸”(使用echo手册页使用的术语)。 关于shell的\\t (用双引号字符串)没什么特别的,所以它不会触及它。 并且,默认情况下,echo不会处理“反斜杠转义”。 你需要-e标志来打开它。

很多人认为带有参数的echo是一种可憎的,不应该存在,并且使用-e标志很容易避免使用printf (它确实在其格式字符串中处理了许多“反斜杠转义”)。

所以printf版本就是这样(注意由于单引号,格式字符串中缺少\\$ )。

printf 'The balance for user %s is:\t$5:00' "$USER"
1 [Shell]转义字符

我尝试在shell脚本中执行简单的SQL查询,但是由于字符转义而遇到麻烦 这是问题线 我已经测试过了,但是遇到了转义字符的错误,我不知道该怎么解决非常感谢 ...

2 这些shell转义字符是什么?

我正在尝试Emacs中的咖啡脚本repl(在ArchLinux下),我看到这些提示周围的转义字符: 这些不应该是颜色,因为我已经启用了ansi-color-for-comint-mode 。 那么有人认识到这些吗? PS:有趣的是我在Emacs + Cygwin设置下没有这个问题 ...

4 在Javascript中使用HTML转义字符

我正在使用jQuery来更改按钮的值。 该按钮包含箭头引号(«和»)。 当我在javascript文件中键入它们时,它会显示字符代码,而不是字符本身。 如何获得这些箭头引号以在javascript中正确显示? ...

5 如何在lineinfile中使用转义字符

我正在写有关添加用户的ansible剧本。 到目前为止,我明白了。 我能够添加用户,这是另一项任务。 我试图在sudoers文件中添加相同的用户。 它失败 我尝试通过添加转义的引号,但随后将以下行附加在sudoers文件中 这行有''多余的周围: 我怎么只 ...

6 如何在 JSX 中使用转义字符

我想在我的 React 应用程序中使用一些转义字符,但我还没有找到任何关于如何在我的应用程序中使用转义字符的资源。 有没有可用的方法论? ...

7 如何在XML中使用转义字符

如何在XML中使用转义符? 情况是,我是一名新的android开发人员,并且我需要一个需要两行打印的字符串(否则,必须没有空格)。 此字符串在string.xml文件中。 我需要使用/ n换行符来中断字符串,但是我不知道如何在XML文件中进行操作。 请帮忙。 ...

8 在openCSV中使用转义字符

我正在使用默认的构造函数和默认的转义字符反斜杠。 因此CSV格式类似于"value1","value2","value3","value4" 从CSV文件Windows XP OS中读取值。 现在的问题是,当值中的双引号像这样的"aa"," I am "fine", what ab ...

2011-12-24 11:57:56 2 5629   java/ csv
9 在grep中使用转义字符

我有以下正则表达式来消除空格,制表符和新行: [^ \\n\\t] 但是,我想为某些其他字符扩展它,例如>和< 。 我试过[^ \\n\\t<>] ,现在效果很好,但如果<或>前面有\\ ,我希望表达式不匹配。 我试过[^ \\n\\t[^\ ...

10 使用转义字符组合 shell 中的命令?

我在 bash 脚本(带有unzip的行)中看到了转义字符的奇怪用法: #!/usr/bin/env bash echo "doing something" unzip "${1}" || echo "Failed to unzip ${1}" \ exit 1 echo "doing someth ...

2020-11-24 14:16:22 1 28   bash
暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2022 STACKOOM.COM