2016-05-22 58 views
0

通常情況下,我使用運行命令nohup的SAS cr_test.sas & 但是,現在我想通過傳遞變量,將其更改爲動態使用UNIX膩子SAS代碼UNIX命令行。 我對unix-putty知之甚少。 任何人都可以請我幫助我如何讓我的代碼更具活力。我將作爲一個例子和邏輯來提及。運行SAS代碼在UNIX膩子使用的命令行參數

作爲一個例子:我想通過用戶ID密碼從命令行。 我想分享我想要做的邏輯。 邏輯:我更改了SAS代碼。我用& 1和密碼&替換用戶ID 2. 然後從命令行傳遞這些用戶ID和密碼爲nohup sas ct_test.sas & ID密碼。 SAS代碼的屏幕,我在Proc sql中更改了& 1和& 2。其中我試圖通過命令行變量ID作爲 enter image description here Unix的膩子代碼和密碼& 2. enter image description here

請回復和幫助我。

+1

通過命令行輸入密碼可以將他們公開給任何可以查看/處理共享訪問系統的人,通常只有您和root擁有讀權限的文件才能讀取它們更安全。 – user667489

+0

[在批處理模式下運行時提示輸入SAS ODBC連接密碼]可能存在重複(http://stackoverflow.com/questions/30514039/prompting-for-sas-odbc-connection-password-when-running-in-batch-模式) – user667489

回答

1

您可以使用命令行選項-set創建可以在SAS程序中檢索的環境變量。語法是

-set id myidvalue 

然後在你的程序,你可以使用%SYSGET()宏功能來檢索值。

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

我不會將它用於密碼,但它對於傳遞運行時選項很有用。

+0

謝謝湯姆。我正在使用ksh shell。我在命令行中使用了**%put user =%sysget(id); ** sas code和** sas test.sas -set id myidvalue **。但它在日誌中顯示警告爲 「警告:宏函數%SYSGET的參數未定義爲系統變量。」用戶字段在日誌中不顯示空白。我怎樣才能定義系統變量仇敵ksh殼?有什麼需要定義環境變量?如果是的話,你可以請建議我如何定義環境變量? – ajay0210

+0

在Unix命令中,選項位於參數前面。或者使用-sysin選項指定程序名稱。 – Tom

+0

謝謝湯姆。我試着'sas test.sas -sysin -set ID myidval',但它仍然顯示相同的警告。 **警告:宏函數%SYSGET的參數未定義爲系統變量。**。如果我嘗試使用'sas -sysin test.sas -set ID myidval',它顯示**無效選項--s **。如果可能的話,你可以分享任何工作示例代碼爲同一場景,以便我可以複製我的代碼中的邏輯。 – ajay0210