0

次のようなbashスクリプトがあります。

myfiles=("file\ with\ spaces.csv")

for file_name in "${myfiles[@]}"
do
        echo "removing first line of file $file_name"
        echo "first line is `head -1 $file_name`"
        echo "\n"
done

しかし、二重引用符で囲んだにもかかわらず、何らかの理由でスペースを認識しません"":

head: cannot open ‘file\\’ for reading: No such file or directory

これを修正するにはどうすればよいですか?

4

2 に答える 2

1

@JohnKugelman の回答を拡張するには:

  • 引用は、Bash で慣れるまで少し時間がかかります。簡単なルールとして、特殊文字を含まない静的文字列には一重引用符を使用し、変数を含む文字列には二重引用符を使用し、特殊文字を含む文字列には引用符を使用します$''
  • すべてのコマンド置換内に個別の引用コンテキストがあります。
  • $()コマンド置換を確立するためのより明確な方法です。これは、はるかに簡単にネストできるためです。

したがって、通常はmyfiles=('file with spaces.csv')and と書きますecho "first line is $(head -1 "$file_name")"

于 2016-08-09T18:18:44.133 に答える