【问题标题】:How to pass a variable with whitespace to env interpreter如何将带有空格的变量传递给环境解释器
【发布时间】:2014-06-17 20:34:53
【问题描述】:

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

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

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

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

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

[first]

如何获得

[first second]

【问题讨论】:

标签: bash variables whitespace shebang env


【解决方案1】:

简而言之:不要依赖能够将多个参数作为shebang行的一部分传递,而一个 您可以使用的参数必须是一个未加引号的单个单词

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

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

#!/bin/bash

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

【讨论】:

    猜你喜欢
    • 2015-08-10
    • 2012-02-16
    • 2013-12-29
    • 2016-07-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多