私はそのパスの下にいくつかのスクリプトをインポートするためにこのドキュメントを作成しましたが、私が書いた~/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
範囲がn
1〜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
その名前の実行可能ファイルが実際に存在するかどうかをテストします。