如何在 Bash 中拆分行并分配变量



你怎么做:

  • 从文本文件中读取
  • 用逗号分隔每行
  • 并将其分配给 bash 中的变量?

 

文件列表

renamedfile.xml,url-01.php
renamedFileDifferent.xml,url-02.php
specificFileRename.xml,"url-03"
new文件名.xml,"url-04"
 

我希望完成这样的事情:

    #!/usr/bin/env bash 
    while read line 
      do   
          wget -c -O newfile remoteFile >/dev/null 2>&1  
    done < filelist 

 

另外,为 cron 作业放置 shell 文件的典型位置是什么?

通过设置特殊的 IFS 变量(内部字段分隔符),可以使 bash 拆分为逗号,而不是默认制表符、换行符和空格。

while IFS=',' read -r newfile remotefile; do
    wget -q -c -O "$newfile" "http://somesite/$remotefile"
done < filelist

示例文件中的引号将对此有问题。您可以使用参数扩展来去除引号。

while IFS=',' read -r newfile remotefile; do
    wget -q -c -O "$newfile" "http://somesite/${remotefile//"/}"
done < filelist

如果引号实际上是文件名的一部分,则需要对其进行 url 编码。您也可以为此使用参数扩展。

while IFS=',' read -r newfile remotefile; do
    wget -q -c -O "$newfile" "http://somesite/${remotefile//"/%22}"
done < filelist

相关内容

  • 没有找到相关文章