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