Bash - 関数で使用されている関数を別のスクリプトに再帰的にコピーする方法

Bash - 関数で使用されている関数を別のスクリプトに再帰的にコピーする方法

.bashrc私のファイルはどのように共有されますが、関連部分のみを共有しますか?

たとえば、次の場所に5つの関数を作成しました.bashrc

f1() {
...
}

f2() {
   f1
   ...
}

f3() {
   f2
   ...
}

f4() {
   f1
   f3
   ...
}

f5() {
   ...
}

f5()ケース1:同僚と共有したいので、コピーしてf5()貼り付けるだけです。

ケース2:共有したいので、コピーして再帰的に合計しf3()たいです。f3()f2()f1()

ケース3:共有したいので、ANDを再帰的にf4()コピーしたいのですが、どちらもANDとして呼び出されても一度だけコピーしたいと思います。f3()f2()f1()f1()f1()f3()f2()

今は手動で見つけてコピーしますが、エラーが発生しやすいです。これを自動的に実行できますか?私はPythonを使用しません。すべての関数が同じ.bashrcファイルにあり、私が定義したbash関数であるとします。

ベストアンサー1

見るflatten.sh。私はすべてのエイリアスと関数をシェルスクリプトにソース化し、必要に応じてフラット化できるようにこの記事を書きました。だから今、あなたがたどった状況に似ています。

したがって、example.lib次のようなもの(またはあなたのもの.bashrc):

f1() {
  echo "I am f1"
}

f2() {
   f1
}

f3() {
   f2
}

f4() {
   f1
   f3
}

f5() {
  :
}

example.shそして次のスクリプト:

#!/usr/bin/env -S bash - 
. /path/to/example.lib

f4

あなたは走ってflatten.sh example.sh取得する

#!/usr/bin/env -S bash - 
f1() {
  echo "I am f1"
}

f2() {
   f1
}

f3() {
   f2
}

f4() {
   f1
   f3
}

f4

おすすめ記事