如何将带有空格的变量传递给env解释器

时间:2014-06-17 20:34:53

标签: bash variables whitespace shebang env

我有这个解释器,它打印ARGS变量:

#!/bin/bash
echo "[$ARGS]"

我在另一个脚本中使用这个解释器:

#!/usr/bin/env ARGS=first interpreter

调用第二个脚本,我得到了

[first]

我如何获得

[first second]

1 个答案:

答案 0 :(得分:1)

缺点:不依赖于能够将多个参数作为shebang行的一部分传递,而 可以使用的一个参数必须是未加引号的单个字

有关更多背景信息,请参阅@tholu已在评论(https://stackoverflow.com/a/4304187/45375)中链接的问题。

因此,我建议您重写其他脚本以使用bash

#!/bin/bash

ARGS='first second' /usr/bin/env interpreter "$@"
  • 这允许您使用bash自己的机制来定义环境变量 ad-hoc (对于调用的命令及其子代),方法是在命令前加上变量赋值,允许您使用引用甚至定义多个变量。
  • 传入的任何命令行参数都会通过interpreter传递给"$@"