- Mark as New
- Bookmark
- Subscribe
- Mute
- RSS Feed
- Permalink
- Report Inappropriate Content
Hi,
I need to concatenate some strings in order to create a command. This is the intial code
filename comando pipe "cd mylogdir; find . -mtime +1 -name '*.log'";
data listafile;
infile comando truncover;
input @1 nomefile $200.;
if index(nomefile,'.log') or index(nomefile,'too long') then output;
run;
filename comando;
I would create the command
"cd mylogdir; find . -mtime +1 -name '*.log'";
dinamically, I mean a would read each parts of it from a dataset and concatenate them in order to create the complete command. Here you are my code
data dat;
a='cd ';
b='mylogdir';
c='find . -mtime +1 -name *.log';
old=a || b || c;
put old=;
run;
%let mystring=;
data _null_;
set dat;
call symput('mystring',old);
run;
put mystring;
filename comando pipe &mystring;
but it does not work. Someone has an idea?
Many thanks
Accepted Solutions
- Mark as New
- Bookmark
- Subscribe
- Mute
- RSS Feed
- Permalink
- Report Inappropriate Content
I see three issues.
1) You left out the semi-colon seperator between the cd and find commands.
old = a || b || ';' || c;
2) You have not put the quotes in the find command.
c="find . -mtime +1 -name '*.log'";
3) You need to quote the string you use in the FILENAME statement.
filename comando pipe "&mystring";
or you could use the quote() function.
call symput('mystring',quote(trim(old)));
- Mark as New
- Bookmark
- Subscribe
- Mute
- RSS Feed
- Permalink
- Report Inappropriate Content
I see three issues.
1) You left out the semi-colon seperator between the cd and find commands.
old = a || b || ';' || c;
2) You have not put the quotes in the find command.
c="find . -mtime +1 -name '*.log'";
3) You need to quote the string you use in the FILENAME statement.
filename comando pipe "&mystring";
or you could use the quote() function.
call symput('mystring',quote(trim(old)));
- Mark as New
- Bookmark
- Subscribe
- Mute
- RSS Feed
- Permalink
- Report Inappropriate Content
Thanks Tom, it worked.