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

时间:2012-09-25 00:46:41

标签: bash wget

你好:

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

文件列表

renamedfile.xml,url-01.php
renamedFileDifferent.xml,url-02.php
specificFileRename.xml, “URL-03”
newFilename.xml, “URL-04”

我希望做到这样的事情:

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

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

1 个答案:

答案 0 :(得分:1)

通过设置特殊的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