【发布时间】:2020-01-07 09:14:36
【问题描述】:
使用 Bash 时,我想 WGET 来自服务器的多个文件,因此我编写了一个带有 For 循环的脚本,该循环递增一个计数器以匹配文件的编号。
但我想包含文件的标题和文件出现的顺序(文件的“ID”)。所以该文件的URI为“example.com/files/hello_world.txt”,ID为42,标题为“Hello World”,当WGET它时,下载的文件名称应为“42_Hello_World.txt” ”。
我尝试了以下代码:
#! /bin/bash
# Init
index=42
title="Hello World"
# Replace blanks with underscore
title=${title/ /_}
# Concat fileName
fileName="$index_$title.txt"
echo $fileName
但输出只是“Hello_World.txt”。当我更改 $title 和 $index 的顺序时,输出为“42.txt”
有人可以向我解释为什么会发生这种情况以及如何解决吗?
tl;博士 在评估字符串时在 bash 中使用两个或多个变量时,只有最后一个变量被“扩展”。第一个被忽略。为什么???
【问题讨论】:
-
您的 tl;dr 错误地识别了问题;两个变量都都扩展了,但第一个扩展没有使用您认为的名称。
标签: bash