1
環境: 舊版本的systemd正在容器中運行。默認情況下,systemd啓動的服務不會獲取容器的環境變量,因爲systemd將其刪除以啓動新的進程。較新的版本允許通過systemd指令傳遞變量,但在這裏使用更新的版本是不可行的。convert/proc/1/environ變量腳本
我不得不使用一些通過環境變量的腳本,最初這很簡單,我想,這個小腳本已經做90%的工作
$ cat /proc/1/environ |tr '\0' '\n'
HOME=/
TERM=linux
但現在我確實有環境變量,包含「\ n」,導致類似的東西
VAR=totally
screwed
up
甚至包含=或其他特殊字符UTF8等
是否有任何聰明爲什麼正確地將這些內容輸入到只將值賦給變量的腳本中?
最後它可能會導致類似這樣的事情。
VAR="totally\nscrewed\up"
似乎不適合我(TM)工作。它仍然在變量陣列中創建「螺旋」「向上」作爲單獨的行([0] = VARS =完全「[1] =」擰緊「[2] =」向上「) – Mandragor
@Mandragor好的,沒有工作。嘗試這個技巧 - 這應該是:'readarray -t vars2 <(cat file4 | tr -d'\ n'| tr'\ 0''\ n')'實際上,我們從初始文件中刪除任何新行,那麼我們將空字節轉換爲新行,我們不能像這樣錯過它 –
嗯,我後面需要'\ n',所以基本上它必須像上面說的那樣保持它像VAR =「totally \ nscrewed \ nup 「幫助解決問題,所以如果字符串中包含」還需要被轉義...等 – Mandragor