Linux
無法對文件值進行 awk 循環
嗨,大家好
我正在嘗試循環作為參數傳遞給腳本的文件(或多個文件)的值,
./myscript file1 file2 ...
但awk
只辨識每個文件的第一行。#!/bin/bash while [[ ${#} > 0 ]] do for archivo in ${@} do read url filename <<<$(awk -F',' '{print $1, $2}' $archivo) curl -o $filename $url done done
作為參數傳遞給腳本的文件具有以下結構:
url1,filename1 url2,filename2 ...
目標是,每當使用一個或多個參數呼叫腳本時,
awk
都應該解析(並傳遞)每個文件中包含的 url 和文件名,curl
以便它下載列出的文件。有關如何使其工作的任何建議?提前致謝,祝您天天快樂!
除了您的循環結構似乎搞砸了(每個文件只讀取一
url
對filename
)之外,未引用的命令替換$(awk -F',' '{print $1, $2}' $archivo)
將在 default 上進行分詞IFS
,結果 awk 輸出為將連接到一行。相比:$ echo $(printf 'foo bar\nbaz bam\n') foo bar baz bam
相對
$ echo "$(printf 'foo bar\nbaz bam\n')" foo bar baz bam
然而,這實際上是一個無用的 awk - 您可以將 shell 設置
IFS
為,
並直接讀取您的文件。可能你想要的是:for archivo in "$@" do while IFS=, read -r url filename rest do curl -o "$filename" "$url" done < "$archivo" done