次のようにエイリアスを「インポート/実行」することはできませんtcsh
。
alias inp1 "grep -i "final_model" /scr/cb2TempProd/tmp/$USER/\!:1/Simulation/Input/assemble.preprocessing | sed 's#.*<##; s/>$//'"
ここで
\!:1
= 手動入力予想出力 =
/scr/cb2TempProd/tmp/$USER/test/Simulation/Input/X1_X_XXXX_XXXXXX15X_H10EK011.inp
希望の出力に追加のエイリアス(事前定義済み)を使用します=
alias inp2 "gdyn `grep -i "final_model" /scr/cb2TempProd/tmp/$USER/\!:1/Simulation/Input/assemble.preprocessing | sed 's#.*<##; s/>$//'`"
- 最初の問題=互換性のない変数エラーの修正(エイリアスファイルもインポート)
- 2番目の質問=単一のエイリアスに2つの出力を持つことはできますか?
答え1
、csh
変数の置換いつも二重引用符で囲まれ、バックスラッシュでブロックすることはできません。
% echo "$"
Illegal variable name.
% echo "\$"
Variable name must contain alphanumeric characters.
% echo "\\$"
Variable name must contain alphanumeric characters.
% echo \$
$
これは Bourne シェルとは異なり、次のドキュメントで説明されています。マンページ[1]:
入力行のエイリアスを指定して解析した後、各
$
コマンドが実行される前に文字で入力された変数置換が実行されます。この拡張は、前に$
Exceptを使用して防ぐことができます。\
"
常に表示される二重引用符()内、一重引用符('
)内には表示されません。逆引用符()で囲まれた文字列は後で解釈されるため` `
(以下のコマンドの置き換えを参照)、後で置き換えは$
発生しません(まったく発生しない場合)。 A$
の後にスペース、タブ、または行末が続くと、変更されずに渡されます。
おそらくエイリアスを指定する最も簡単な方法は、前/後に二重引用符を開始/停止することです\$
。
alias inp1 "grep -i 'final_model' /scr/cb2TempProd/tmp/$USER/\!:1/Simulation/Input/assemble.preprocessing | sed 's#.*<##; s/>"\$"//'"
inp1
2番目のエイリアスの場合は、次の場所に貼り付けるのではなく、単に再使用する必要があると思います。
alias inp2 'gdyn `inp1 \!:1`'
[1]これはのマンページですが、参照と置換のcsh
項目はとよく似ていますtcsh
。