ここでドキュメントのパスを使用する方法

ここでドキュメントのパスを使用する方法

私はそのパスの下にいくつかのスクリプトをインポートするためにこのドキュメントを作成しましたが、私が書いた~/own_scripts/方法でそのパスが重複しました。

source <<-EOF
  ~/own_scripts/1.sh
  ~/own_scripts/2.sh
  # More scripts under ~/own_scripts;
EOF

パスを使用して変数を設定してから設定を解除するのは問題ありませんが、それでも重複が発生します。

ここでこのようなsource(または)パスの冗長性を避けるための最良の方法は何ですか?bash

ベストアンサー1

ここで文書は単なる文書です。このドキュメントのスクリプトはまさにスクリプトです。

スクリプトは次のように書くことができます。

cd "$HOME/own_scripts" || exit 1
./1.sh
./2.sh

または、呼び出したいすべてのスクリプトの呼び出しn.sh範囲がn1〜30の場合:

cd "$HOME/own_scripts" || exit 1
for (( i = 1; i <= 30; ++i )); do
    [ -x "${i}.sh" ] && ./${i}.sh
done

それは、

source <<-'END_SCRIPT'
    cd "$HOME/own_scripts" || exit 1
    for (( i = 1; i <= 30; ++i )); do
        [ -x "${i}.sh" ] && ./${i}.sh
    done
END_SCRIPT

実際にここにある文書は今短いので、もう一度削除できますcd

source <<-'END_SCRIPT'
    for (( i = 1; i <= 30; ++i )); do
        [ -x "$HOME/own_scripts/${i}.sh" ] && "$HOME/own_scripts/${i}.sh"
    done
END_SCRIPT

標準入力から読まないだけなので、sourceここでドキュメントのソーシングは開始されません。

代わりに、次のようなものを使用してください。

bash <<-'END_SCRIPT'
    ...as above...
END_SCRIPT

bashこれがスクリプトを実行したいシェルの場合)。

  • 'END_SCRIPT'ここで文書を始めるのに慣れています。引用すると、現在のシェルがドキュメントの変数を拡張するのを防ぎ、より詳細なマークアップが読者のドキュメントとして使用されます。

  • チルダ以来代わりに$HOME使用しました。~変数のように動作しません詳細は、$HOMEスクリプト内の文書化に適しています。

  • ここにあるドキュメントのスクリプトは、cdディレクトリをその$HOME/onw_scriptディレクトリに変更するためにのみ使用されます。失敗すると、シェルセッションが終了します。

  • for-loop(シェルで動作bash)を使用した例では、kshループで実行されるスクリプトの名前を生成します。また、テストを使用して実行を試みる前に、-xその名前の実行可能ファイルが実際に存在するかどうかをテストします。

おすすめ記事