使用可以将环境简单地输出为可运行的shell脚本
env > my_env
Run Code Online (Sandbox Code Playgroud)
......后来在另一个剧本......
set -a
source my_env
Run Code Online (Sandbox Code Playgroud)
这适用于最琐碎的情况,但如果任何特殊的字符或空格在env中则失败.
我如何修复上面的脚本,以便它可以用于这样的东西a='"'"'"?
使用set而不是env:
\xe2\x97\x8b \xe2\x86\x92 set | grep LESS\nLESS=-R\nLESSCLOSE=\'/usr/bin/lesspipe %s %s\'\nLESSOPEN=\'| /usr/bin/lesspipe %s\'\n\n\xe2\x97\x8b \xe2\x86\x92 env | grep LESS\nLESS=-R\nLESSOPEN=| /usr/bin/lesspipe %s\nLESSCLOSE=/usr/bin/lesspipe %s %s\nRun Code Online (Sandbox Code Playgroud)\n\n由于这个类似的问题,我们可以这样做来获取环境变量,如下所示:
\n\n\xe2\x97\x8b \xe2\x86\x92 (set -o posix; set) | grep LESS\nLESS=-R\nLESSCLOSE=\'/usr/bin/lesspipe %s %s\'\nLESSOPEN=\'| /usr/bin/lesspipe %s\'\nRun Code Online (Sandbox Code Playgroud)\n\n试试这个庞然大物,它应该打印出与“原始”外壳不同的内容。嗯嗯:
\n\ndiff --old-line-format=\'%L\' --unchanged-line-format= --new-line-format= \\\n <(bash -c \'set -o posix; set\' | sort) \\\n <(env -i bash -c \'set -o posix; set\' | sort)\nRun Code Online (Sandbox Code Playgroud)\n