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"

関連情報