小编Bai*_*ker的帖子

使用 env 设置包含空间的环境变量

我正在尝试env用于为子进程设置环境变量(从另一个来源读取,例如文件)。本质上,我正在尝试以下操作:

env VALUE=thisisatest ./somescript.sh
Run Code Online (Sandbox Code Playgroud)

例如,如果somescript.sh是:

echo $VALUE
Run Code Online (Sandbox Code Playgroud)

然后这将按thisisatest预期打印。但我想从文件中加载变量。我已经到了这一点:

env $(cat .vars | xargs -d '\n') ./somescript.sh
Run Code Online (Sandbox Code Playgroud)

但是,当任何变量包含空格(并且引号不能按预期工作)时我就会遇到麻烦。例如:

env $(echo 'VALUE="this is a test"' | xargs -d '\n') ./somescript.sh
Run Code Online (Sandbox Code Playgroud)

会出错

env: is: No such file or directory
Run Code Online (Sandbox Code Playgroud)

并尝试:

env $(echo 'VALUE="thisisatest"' | xargs -d '\n') ./somescript.sh
Run Code Online (Sandbox Code Playgroud)

会给我意想不到的:

"thisisatest"
Run Code Online (Sandbox Code Playgroud)

我认为这会正常工作,因为运行env VALUE="thisisatest" ./somescript.sh打印它没有引号。

从错误中,我发现由于某种原因 env 不理解引号意味着后面的值应该是一个字符串。但是,我不确定如何以正确解释引号的方式插入这些变量。

任何人都可以提供有关如何完成此操作的任何提示吗?

谢谢!

bash environment-variables env

8
推荐指数
1
解决办法
2万
查看次数

递归 Gziping 文件(并保留原始文件)和 Gziping 文本输入

我需要 Gzip 来为我正在构建的网络服务器预压缩一些静态文件。我需要 gzip 的所有文件都将位于名为.cache. 由于某些客户端可能不接受 gzip 压缩的响应,因此我希望在 gzip 压缩它们时保留所有原始文件。是否有任何命令可用于递归 gzip 文件.cache夹中的文件,同时仍保留原始文件?如果在已经有 gzipped 文件的文件夹上运行此命令是否会 gzip gzipped 文件(那些已经带有 .gz 后缀的文件)?

当我们讨论 gzip 的主题时:我一直在寻找一种将文本输入 gzip 传递给 gzip 而不是文件的方法。我想出了在命令上后缀一个破折号(如gzip -c -),但我不确定这是否有效或我如何使用它。谁能解释一下?

command-line gzip

2
推荐指数
1
解决办法
1665
查看次数

标签 统计

bash ×1

command-line ×1

env ×1

environment-variables ×1

gzip ×1