2014-08-30 84 views
-1

在执行下面的脚本新行:显示在shell变量

​​

我得到的输出string(n)。但我期望看到输出为:"string('\n')"

有没有什么办法得到这个?

注:我需要的输出(在单引号\n)将被显示在string('\n')使用该变量在m_wc abinitio命令。

更新:感谢您快速响应,但发生'\ n'时变量文本转到下一行。输出如下:

export var='string('\''\n'\'')' 
export var1="string('\\n')" 
echo "$var1" 
string(' 
') 
>echo $var 
string(' 
') 

有没有什么办法可以完全避开'\ n'?

更新:printf'%s \ n'“$ var1”似乎工作正常,但我怎样才能把这个值给一个变量,并在脚本中的任何地方使用它?

我试图把象下面这样:但不工作:

出口VAR1 = “字符串( '\ n')”

出口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的 ' 字符串(” “)

+1

不要使用'echo';使用'printf'%s \ n'“$ var1”'。你不知道'echo'将会做什么不同的版本;不同的shell以不同的方式处理参数中的反斜杠转义。 'printf'与POSIX一致并且标准化 - 并且做你想要的。注意格式字符串''%s \ n''的单引号和''$ var1''周围的双引号;两者都是一个好主意,原因不同。 – 2014-09-01 23:41:24

回答

0

做最简单的事情大概是:

export var1="string('\\n')" 
echo "$var1" 
+0

...还可以查看关于** [UNIX shell中的转义序列](http://steve-parker.org/sh/escape.shtml)的简短文章**。 – TheCodeArtist 2014-08-30 05:25:49

+0

嗨威廉姆斯,感谢您的回应,但它变量文本转到下一行'\ n'发生时。输出如下: export var1 =“string('\\ n')” > echo“$ var1” string(' ') 有没有什么办法可以转义\ n? – sanju 2014-09-01 23:08:13

0

这会做你想要什么:

export var='string('\''\n'\'')' 

你需要知道的是:

  1. 你可以包括单引号之外的任何内容(撇号除外);和
  2. 您可以通过在单引号或双引号之外加上反斜杠来引用撇号。

有了这两条规则,你可以在shell中引用任何东西。

或者,您可以使用双引号,但有效使用它的规则更复杂。

0

最后,得到解决方案来解决这个问题。下面是代码:

出口DIR = “字符串( '\ n')”

出口J = $(printf的 “%S \ n” $ DIR)

出口BYT_CNT = m_wc -no-commas -string "$j" /temp/users/list.dat | awk '{print $1}'

echo $ BYT_CNT

感谢各位的帮助。