如何解析shell脚本中的SAS宏变量

如何解析shell脚本中的SAS宏变量

我正在 SAS 宏中通过 X 命令运行 shell 脚本。我想在 shell 脚本中使用 SAS 宏中定义的宏变量。我知道如果我将该宏变量作为参数传递给 shell 脚本,我可以在 X 命令中解析它。

例如,我知道以下内容可以正常工作:

%macro a;

%let var1=test;

X "abc.sh &var1";

%mend;
%a;

使用这个 shell 脚本:

echo "value is $1" >  myfile.txt

我想要的是:

%macro a;

%let var1=test;

X "abc.sh";

%mend;

%a;

使用这个 shell 脚本:

echo "value is &val1" >  myfile.txt

有没有办法解决shell脚本中的宏变量?我做了研究,但找不到任何东西。

答案1

shell 将无法解析来自外部宏系统的变量,例如&val1,就像您在示例中建议的那样。

从环境中获得 shell 使用价值。例如,如果您导出一个VAR1包含内容的变量test,那么您可以在以下位置使用它abc.sh

echo "value is $VAR1" >myfile.txt

(我只使用全部大写,因为这是 shell 中导出变量的通常约定,使用小写$var1就可以了,只要导出的名称也是小写即可。)

您需要弄清楚如何从 SAS 导出变量(我没有 SAS 经验。)似乎SAS 支持setenv语句或命令。setenv某些 shell 通常使用它来导出变量,因此如果我尝试自己导出变量,我会在其中查找。

相关内容