0

変更されたファイルのみをエクスポートする SVN スクリプトを作成しています。そうすることで、特定のファイルが含まれていない場合にのみファイルをエクスポートしたいと考えています。

そのため、まず、ここにあるスクリプトを変更します。

ここにある機能を使用して、文字列に含まれているかどうかを確認する方法を見つけまし

今、次を実行しようとすると:

filename=`echo "$line" |sed "s|$repository||g"`
if [ ! -d $target_directory$filename ] && [[!"$filename" =~ *myfile* ]] ; then

fi

ただし、次のようなエラーが表示され続けます。

/home/home/myfile: "no such file or directory"

BASH は $filename をリテラルとして扱っているようです。パスではなく文字列として読み取るようにするにはどうすればよいですか?

ご協力いただきありがとうございます!

4

1 に答える 1

1

いくつかの構文の問題があります (シェル スクリプト リンターはそれらを取り除くことができます)。

  • 「[[」の後にスペースが必要です。そうしないと、コマンドとして解釈されます (投稿したものと同様のエラーが発生します)。
  • 「!」の後にスペースが必要です。そうしないと、オペランドの一部と見なされます。

then 句にも何かが必要ですが、なんとか実行できたので、省略しただけだと思います。

  • [[ $foo == *bar* ]]投稿した部分文字列のものからの2つの異なる回答を組み合わせました[[ $foo =~ .*bar.* ]]. 1 つ目はグロブを使用し、2 つ目は正規表現を使用します。使うだけ[[ ! $filename == *myfile* ]]
于 2013-01-23T00:20:02.113 に答える