可执行文件期望命令行参数的格式为:
-varname "[64]"
需要将其包装为环境变量,以便可执行文件可以通过其他工具启动,所以我尝试了:
> setenv PARAM '-varname "[64]"'
> echo $PARAM
echo: No match.
我尝试了各种转义,但无法找到如何将原始字符串包含在环境变量中。
必须提到内部可执行文件和包装器在它们的期望中都是不灵活的,例如,可执行文件期望的变量如下所示,而包装器期望的字符串通过'setenv'与环境变量相关联。
提示吗?
谢谢!
您的设置是正确的,但问题是shell如何扩展$PARAM的值。
如您所知,命令行中的星号被shell扩展为当前目录中的所有文件。
> echo *
shell展开的结果随后用作echo
的参数。
命令行允许使用其他通配符/glob模式。方括号定义字符类。回显包含4
或6
的所有文件:
> echo *[46]*
回显所有文件名4或6。
> echo [46]
在上面的示例中,如果没有恰好命名为4或6的文件,那么您将得到echo: No match.
> setenv PARAM '-varname "[64]"'
> printenv PARAM
--> -varname "[64]"
注意printenv
的参数是PARAM
,而不是$PARAM
。这避免了$PARAM
的shell扩展。