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

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

它给出了输出

用户的余额是:5.00美元

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

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

不给出输出

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

相反,输出是 -

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

#1楼 票数:3 已采纳

如果没有-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

#2楼 票数:2

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

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

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

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

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

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

  ask by yadav_vi translate from so

未解决问题?本站智能推荐:

3回复

迭代仅由非转义字符分隔的字符串

说我有以下字符串: 什么命令将具有以下代码: 并产生以下输出: 或者,我可以使用单引号在已经用双引号括起来的字符串输入上实现这一点吗? 也就是说,我能拥有这根绳子吗? 在上述条件下产生相同的输出?
2回复

[Shell]转义字符

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

在Shell脚本中的命令中转义特殊字符

我对shell脚本并不陌生。 我在shell脚本中有一个具有特殊字符的命令。 现在我不知道如何从每个单词中逃脱特殊字符。 / app / home / apache243 / bin / httpd -f / app / apache $ configs / statichost1.co
1回复

转义shell脚本中的星号和其他特殊字符

我有一个要求,逐行读取一个文件,线,构建一个管道grep的声明使用-v标记来消除这些模式,即我有一个文件,说negativelist,它包含以下模式: 因此,我逐行读取此文件中的行和构建管道grep的语句,如下所示,以从样品中消除文件这些模式,inputfile中 grep -v“Hel
1回复

在Shell或bash中使用正则表达式的子字符串

我有一个巨大的文本文件,其中包含如下行项目 我想在最后一次出现“-”之后和“.html”(仅限“agcd1043”)之前提取字母数字字符,并将这些值保存到另一个文件中。 请帮助我使用正则表达式( . -(.+).html. - 是我用来处理较小文件的正则表达式)或任何其他方法。 TIA
2回复

正则表达式删除.和-在字符串中使用shell脚本

我有一个字符串com.xyx.it.abc.sweta-test-parameter我需要将它转换为com/xyz/it/abc/swetatestparameter 如何使用正则表达式实现输出? 我需要更换。 使用 / 和 remove - from string 下面是我尝试过的尝试: 输出是:
3回复

在Shell脚本中使用正则表达式提取子字符串

字符串可以是以下形式: com.company。$(PRODUCT_NAME:rfc1034identifier) $(PRODUCT_BUNDLE_IDENTIFIER) com.company。$(PRODUCT_NAME:rfc1034identifier)。$(some
4回复

在shell脚本中使用正则表达式从字符串中提取url

我需要提取一个用<strong>标签包装的URL。 这是一个简单的正则表达式,但我不知道如何在shell脚本中这样做。 这是一个例子: 我需要$url变量中的“http://www.example.com/index.php”。 使用busybox。