2014-08-30 122 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

感謝各位的幫助。