JavaScriptを作成するように指示されました。いくつかのシェルスクリプトを学んだ後(ほとんど)私は次のようにしました:
for item in *
do
if [ -f $item ]
then
sed 's/test/open/g' file.sh
done
私はこのプログラムが私がこのプログラムを置いたフォルダ内のファイルを見つけると信じています。それからfile.shを見つけて、sedで理解されているようにtestという単語をopenに置き換えます(もう一度お話ししますが、これが真でない場合は許してください)。 1つのファイルではなくプログラム内のすべての.shファイルを検索し、すべてのファイルでtestという単語を見つけてopenに置き換えるようにプログラムを変更するにはどうすればよいですか?あいまいであれば申し訳ありません。しかし、私が扱うべきことはそれがすべてです。
ベストアンサー1
あなたのスクリプトには多くの点で欠陥があります。
for item in * <--do the following action on every item in this directory
do
if [ -f $item ] <--if the item is a file then do this
then
sed 's/test/open/g' file.sh <-- replace "test" with "open" in the file - file.sh
<--missing closing "fi" statement here
done
何をしたいのかわかりませんが、すべてのtestエントリをファイルからopenに置き換えたい場合:すべてのファイルでそれを置き換えるには、file.sh
次の手順を実行する必要があります。sed 's/test/open/g' file.sh
#!/bin/bash
#
script=$(basename "$0")
for item in "/path/to/files/"*; do
if [[ "$item" == "$script" ]]; then
:
elif [[ -f "$item" || "${item: -2}" = "sh" ]]; then
sed -i 's/test/open/g' "$item"
fi
done
編集する
実行している作業がわからない場合は、このスクリプトを非常に慎重に使用する必要があります。正しいディレクトリを指していることを確認し、その中のすべてのファイルを完全に変更していることに注意してください。