BookmarkSubscribeRSS Feed
My_SAS
Calcite | Level 5

Reg:Shell X command

Actually i want to execute sheel script if the day=6

i am doing like this

data _null_;
if &day=6;
then do;
x 'new.sh';
x 'old.sh';
end;
run;

If i keep like this is was working on all the days acutally &day i my macro variable
from a dataset it was not resoving properly how can i do it.

4 REPLIES 4
manojinpec
Obsidian | Level 7

Hi,

My_SAS since the comparison is onmacro variable the condition should be macr condition and would involve macr if condition:-

data _null_;


%if &day=6;
%then %do;
x 'new.sh';
x 'old.sh';
%end;
run;

try this..

My_SAS
Calcite | Level 5

actually is there any way for the x command to execute the shell script if it satisfy the contion i have given

KarlK
Fluorite | Level 6

I have not tested this, but just looking at your code, it appears you have an extra semicolon. Try it without the semicolon after the "6". In other words:

if &day = 6 then do;

Karl

FriedEgg
SAS Employee

X statment cannot be executed from in a datastep.  It can be executed conditionally through a macro as shown above.

In a datastep, use call system, or call execute with the x command inside.

data _null_;

if &day=6 then do;

call system('/path/to/new.sh');

call execute('x /path/to/old.sh');

end;

run;

hackathon24-white-horiz.png

2025 SAS Hackathon: There is still time!

Good news: We've extended SAS Hackathon registration until Sept. 12, so you still have time to be part of our biggest event yet – our five-year anniversary!

Register Now

How to Concatenate Values

Learn how use the CAT functions in SAS to join values from multiple variables into a single value.

Find more tutorials on the SAS Users YouTube channel.

SAS Training: Just a Click Away

 Ready to level-up your skills? Choose your own adventure.

Browse our catalog!

Discussion stats
  • 4 replies
  • 1416 views
  • 0 likes
  • 4 in conversation