Имена файлов с пробелами внутри команды perl внутри echo

Имена файлов с пробелами внутри команды perl внутри echo

Как обеспечить поддержку имен файлов с пробелами в следующей команде?

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"

Связанный контент