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

如何在Bash中拆分一行并分配变量,bash,wget,Bash,Wget,你如何: 从文本文件中读取 用逗号分隔每一行 并将其分配给bash中的变量 文件列表 重命名文件.xml,url-01.php 重命名文件different.xml,url-02.php specificFileRename.xml,“url-03” newFilename.xml,“url-04” 我希望能完成以下任务: #!/usr/bin/env bash while read line do wget -c -O newf

你如何:

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

文件列表

重命名文件.xml,url-01.php
重命名文件different.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 
#/usr/bin/env bash
读行时
做
wget-c-O新文件远程文件>/dev/null 2>&1
完成<文件列表


另外,cron作业的shell文件通常放置在什么位置?

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

while IFS=',' read -r newfile remotefile; do
    wget -q -c -O "$newfile" "http://somesite/$remotefile"
done < filelist
当IFS=',read-r newfile remotefile;做
wget-q-c-O“$newfile”http://somesite/$remotefile“
完成<文件列表
示例文件中的引号将对此有问题。可以使用参数展开来删除引号

while IFS=',' read -r newfile remotefile; do
    wget -q -c -O "$newfile" "http://somesite/${remotefile//\"/}"
done < filelist
当IFS=',read-r newfile remotefile;做
wget-q-c-O“$newfile”http://somesite/${remotefile/\“/}”
完成<文件列表
如果引号实际上是文件名的一部分,则需要对其进行url编码。您也可以使用参数扩展

while IFS=',' read -r newfile remotefile; do
    wget -q -c -O "$newfile" "http://somesite/${remotefile//\"/%22}"
done < filelist
当IFS=','read-r newfile remotefile;do
wget-q-c-O“$newfile”http://somesite/${remotefile/\“/%22}”
完成<文件列表

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

while IFS=',' read -r newfile remotefile; do
    wget -q -c -O "$newfile" "http://somesite/$remotefile"
done < filelist
当IFS=',read-r newfile remotefile;做
wget-q-c-O“$newfile”http://somesite/$remotefile“
完成<文件列表
示例文件中的引号将对此有问题。可以使用参数展开来删除引号

while IFS=',' read -r newfile remotefile; do
    wget -q -c -O "$newfile" "http://somesite/${remotefile//\"/}"
done < filelist
当IFS=',read-r newfile remotefile;做
wget-q-c-O“$newfile”http://somesite/${remotefile/\“/}”
完成<文件列表
如果引号实际上是文件名的一部分,则需要对其进行url编码。您也可以使用参数扩展

while IFS=',' read -r newfile remotefile; do
    wget -q -c -O "$newfile" "http://somesite/${remotefile//\"/%22}"
done < filelist
当IFS=','read-r newfile remotefile;do
wget-q-c-O“$newfile”http://somesite/${remotefile/\“/%22}”
完成<文件列表

看起来您是在用逗号和空格进行拆分,而不仅仅是用逗号。至于您的附带问题,这只是一个首选项。我使用$HOME/bin。看起来你是在用逗号和空格分割,而不仅仅是逗号。至于你的旁题,这只是一个偏好。我使用$HOME/bin。