【问题标题】:Run sas code in unix-putty using command line variable使用命令行变量在 unix-putty 中运行 sas 代码
【发布时间】:2016-09-19 07:39:12
【问题描述】:

通常,我使用命令 nohup sas cr_test.sas& 使用 UNIX-putty 运行 SAS 代码 但是,现在我想通过在 unix 的命令行中传递变量来将其更改为动态的。 我对unix-putty的了解较少。 谁能帮助我如何使我的代码更加动态。我将作为示例和逻辑提及。

作为示例:我想从命令行传递 用户 ID密码。 我想分享我想做的逻辑。 逻辑:我更改了 SAS 代码。我用 &1 替换了用户 ID,用 &2 替换了密码。 然后从命令行将这些用户 ID 和密码作为 nohup sas ct_test.sas& id password 传递。 我在 Proc sql 中更改 &1 和 &2 的 SAS 代码屏幕。 Unix-Putty 代码,我在其中尝试将 id 的命令行变量传递为 &1 和密码 &2。

请回复并帮助我。

【问题讨论】:

标签: sas sh command-line-arguments command-prompt putty


【解决方案1】:

您可以使用命令行选项 -set 创建可以在 SAS 程序中检索的环境变量。语法是

-set id myidvalue

然后在您的程序中您可以使用%SYSGET() 宏函数来检索值。

... user=%sysget(id) ...

我不会将它用于密码,但它对于传递运行时选项很有用。

【讨论】:

  • 谢谢汤姆。我正在使用 ksh 外壳。我在 sas 代码中使用了 %put user=%sysget(id);,在命令行中使用了 sas test.sas -set id myidvalue。但它在日志中显示警告为“警告:宏函数 %SYSGET 的参数未定义为系统变量。”。用户字段在日志中未显示为空白。我如何定义系统变量 foe ksh shell?是否需要定义环境变量?如果可以,您能否建议我如何定义环境变量?
  • 在 Unix 命令中,选项位于参数之前。或者使用 -sysin 选项指定程序名称。
  • 谢谢汤姆。我尝试使用“sas test.sas -sysin -set ID myidval”,但它仍然显示相同的警告。 警告:宏函数 %SYSGET 的参数未定义为系统变量。。如果我尝试使用“sas -sysin test.sas -set ID myidval”,它会显示 invalid option --s。如果可能的话,您能否分享同一场景的任何工作示例代码,以便我可以在我的代码中复制逻辑。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-02-09
  • 1970-01-01
  • 2014-11-20
  • 2017-06-16
  • 2012-08-15
  • 1970-01-01
  • 2018-09-12
相关资源
最近更新 更多