【发布时间】:2014-08-30 05:17:10
【问题描述】:
在执行以下脚本时:
export var1="string('\n')"
echo $var1
我得到的输出为string(n)。但我希望看到输出为:"string('\n')"。
有什么办法吗?
注意:我需要将输出显示在 string('\n') 中(\n 用单引号括起来)才能在 m_wc abinitio 命令中使用该变量。
更新:感谢您的快速响应,但是当出现“\n”时,变量文本会转到下一行。输出如下:
export var='string('\''\n'\'')'
export var1="string('\\n')"
echo "$var1"
string('
')
>echo $var
string('
')
有什么办法可以完全转义 '\n' 吗?
更新: printf '%s\n' "$var1" 似乎工作正常,但我怎样才能将此值放入变量并在脚本中的任何位置使用它?
我尝试如下所示:但不起作用:
export var1="string('\n')"
export var2="printf '%s\n' "$var1""
导出 BYT_CNT=m_wc -no-commas -string $var2 /prod/users/edw/gvx770/list.dat|awk '{print $1}'
回显 $var2
回显 $var2 printf '%s ' 细绳(' ')
【问题讨论】:
-
不要使用
echo;使用printf '%s\n' "$var1"。你不知道echo的不同版本会做什么;不同的 shell 以不同的方式处理参数中的反斜杠转义。printf与 POSIX 保持一致和标准化 — 可以做你想做的事。注意格式字符串'%s\n'周围的单引号和"$var1"周围的双引号;出于不同的原因,两者都是一个好主意。