将tcsh中的变量设置为包含引号和方括号的值



可执行文件期望命令行参数的格式为:

-varname "[64]"

需要将其包装为环境变量,以便可执行文件可以通过其他工具启动,所以我尝试了:

> setenv PARAM '-varname "[64]"'
> echo $PARAM
echo: No match.

我尝试了各种转义,但无法找到如何将原始字符串包含在环境变量中。

必须提到内部可执行文件和包装器在它们的期望中都是不灵活的,例如,可执行文件期望的变量如下所示,而包装器期望的字符串通过'setenv'与环境变量相关联。

提示吗?

谢谢!

您的设置是正确的,但问题是shell如何扩展$PARAM的值。

如您所知,命令行中的星号被shell扩展为当前目录中的所有文件。

> echo *

shell展开的结果随后用作echo的参数。

命令行允许使用其他通配符/glob模式。方括号定义字符类。回显包含46的所有文件:

> echo *[46]*

回显所有文件名4或6。

> echo [46]

在上面的示例中,如果没有恰好命名为4或6的文件,那么您将得到echo: No match.

解决方案:使用printenv
> setenv PARAM '-varname "[64]"'
> printenv PARAM
-->  -varname "[64]"

注意printenv的参数是PARAM,而不是$PARAM。这避免了$PARAM的shell扩展。

相关内容

  • 没有找到相关文章

最新更新