我正在使用bash通过wget下载文件并自动更改文件名,但是当我使用|
(它是space pipe space
)来区分变量时,它总是使用以下命令读取文件名的第一部分空间
这是我的脚本,我使用while read -r fileName ' | ' url
来读取我的download.list文件
#!/usr/bin/env bash
set -e
IFS=' | '
while read -r fileName url
do
wget $url -O $fileName
done < download.list
exit 0
这是我的download.list中的示例文本
MR HH GD | https://example/xxxx.zip
我希望我能得到MR HH GD.zip
,但实际上它给了我这个:
ME.zip
答案 0 :(得分:1)
我不知道您是如何通过read命令的。在bash(1)的“ SHELL BUILTIN COMMANDS”部分中,将读取命令定义为接受变量名称作为参数,而不是纯文本。
您可以像这样使用IFS
,但是您必须自己删除所有不需要的空格。
while IFS='|' read -r fileName url
do
echo ">$fileName<"
echo ">$url<"
done < download.list
您的download.list中的 MR HH GD | https://example/xxxx.zip
将输出
>MR HH GD <
> https://example/xxxx.zip<