SASマクロのXコマンドでシェルスクリプトを実行しています。 SASマクロで定義されたマクロ変数をシェルスクリプトで使用したいと思います。そのマクロ変数をシェルスクリプトに引数として渡すと、Xコマンドでそれを解析できることがわかります。
たとえば、次はうまく動作することを知っています。
%macro a;
%let var1=test;
X "abc.sh &var1";
%mend;
%a;
次のシェルスクリプトを使用します。
echo "value is $1" > myfile.txt
私が望むもの:
%macro a;
%let var1=test;
X "abc.sh";
%mend;
%a;
次のシェルスクリプトを使用します。
echo "value is &val1" > myfile.txt
シェルスクリプトでマクロ変数を解決する方法はありますか?調査してみましたが、何も見つかりませんでした。
答え1
&val1
例で示唆したように、シェルは外部マクロシステム(たとえば)の変数を解析できません。
あなたできる環境でシェル使用量の値を取得します。たとえば、VAR1
contentを含む変数をエクスポートする場合は、test
次のように使用できますabc.sh
。
echo "value is $VAR1" >myfile.txt
(シェルから変数をエクスポートする一般的な規則なので、すべて大文字を使用します。エクスポート$var1
した名前も小文字である限り、小文字でも大丈夫です。)
SASから変数をエクスポートする方法を知る必要があります。 (SASの経験はありません。)〜らしいSASはsetenv
ステートメントまたはコマンドをサポートします。setenv
これは通常、一部のシェルから変数をエクスポートするために使用されるため、変数を直接エクスポートしようとするとそこを見てみましょう。