我的 bash 脚本没有创建新文件

我的 bash 脚本没有创建新文件

我尝试遍历包含 URL 的列表并下载内容。内容通过管道传输json_pp以使其更加美观。

但问题是它只生成 loot_0.json!并且不断覆盖内容。

#!/bin/bash
COUNTER=0
cat links.txt | while read line; do #links.txt
    PAGE=$(curl -s $line)
    echo $PAGE | json_pp
done > loot/loot_$((COUNTER++)).json

我也尝试过

#!/bin/bash
COUNTER=0
cat links.txt | while read line; do #links.txt
    PAGE=$(curl -s $line)
    echo $PAGE | json_pp > loot/loot_$((COUNTER++)).json
done

预期行为应该是文件

loot_1.json
loot_2.json
loot_3.json
..

答案1

以下 shellscript 对我有用。我对 有问题json_pp,它抱怨malformed JSON string, neither array, object, number, string or atom

#!/bin/bash

counter=0
while read line;
do
# wget "$line" -O "${line##*/}$((counter++))"
 page=$(curl -s "$line")
 echo "$page" > "loot_$((counter++))"
done < links.txt
  • 我更喜欢小写变量(以降低与已经存在的环境变量冲突的风险)。

  • 我从输入文件重定向(并避免调用cat

  • counter在循环内更新

  • 我使用局部变量 loot_... 进行测试,但如果您愿意,也可以将子目录保留在路径中。

  • 请注意,我在脚本中使用变量时引用了“...”。

相关内容