echo内のperlコマンドにスペースがあるファイル名

echo内のperlコマンドにスペースがあるファイル名

次のコマンドでスペースを含むファイル名をサポートするにはどうすればよいですか?

echo "$(perl -MMIME::Base64 -e 'open F, shift; @lines=<F>; close F; print MIME::Base64::encode(join(q{}, @lines))' $filename)"

うまくいかないような次のことを試しました。

  1. echo ... \"$filename\")
  2. echo '$(... "open..." "$filename")'
  3. echo $(...'open ... "$filename")

答え1

echo "$(perl -MMIME::Base64 -0777 -pe '$_=MIME::Base64::encode$_' < "$filename")"

私はechoこれがはいと仮定しています。そうでない場合:

perl -MMIME::Base64 -0777 -pe '$_=MIME::Base64::encode$_' < "$filename"

同等です。

一部のシステムにはbase64次のコマンドがあります。

base64 < "$filename"

またはopensslインストールされている場合:

openssl base64 < "$filename"

関連情報