带有空格的文件名在 echo 中的 perl 命令中

for*_*rin 3 perl

如何在以下命令中支持带空格的文件名?

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

我尝试了以下似乎不起作用的方法:

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

Sté*_*las 5

echo "$(perl -MMIME::Base64 -0777 -pe '$_=MIME::Base64::encode$_' < "$filename")"
Run Code Online (Sandbox Code Playgroud)

我假设echo这里是一个例子。如果没有,这个:

perl -MMIME::Base64 -0777 -pe '$_=MIME::Base64::encode$_' < "$filename"
Run Code Online (Sandbox Code Playgroud)

将是等效的。

请注意,某些系统有一个base64命令:

base64 < "$filename"
Run Code Online (Sandbox Code Playgroud)

或者如果openssl已安装:

openssl base64 < "$filename"
Run Code Online (Sandbox Code Playgroud)