ソース化された Bash スクリプトの関数でエイリアスを作成して使用したいと考えています。私はインセプションのような問題に遭遇しました。これを適切に行う方法についての指針をいただければ幸いです。
ソースのサンプル スクリプトを次に示します。
#!/bin/bash
myFunction(){
alias zappo="echo"
zappo
}
なにか提案を?
エイリアスは、スクリプトの機能が制限されていることに注意してください。Advanced Bash Scripting Guideから:
スクリプトでは、エイリアスの有用性は非常に限られています。エイリアスがマクロ展開などの C プリプロセッサの機能の一部を想定できるとよいのですが、残念ながら Bash はエイリアス本体内で引数を展開しません。[2] さらに、スクリプトは、if/then ステートメント、ループ、関数などの「複合構造」内でエイリアス自体を展開できません。追加の制限は、エイリアスが再帰的に展開されないことです。ほとんどの場合、エイリアスで実行したいことはすべて、関数を使用するとより効果的に実行できます。
これには変数を使用します。
myFunction(){
zappo="echo"
$zappo "foo bar"
}
またはラッパー関数でさえ:
zappo() {
if [ $1 = 'some value'] ; then
do something
fi
# apply out arguments to echo
echo $@
}
次のように呼び出します。
zappo log_info "foo bar"