如何让 bash 脚本中的变量对应于 wget 中的 url

How do I have a variable in a bash script correspond to the url in wget

例如,我有一个名为 getimage 的 bash 脚本。在脚本中我有:

wget http://www.example.com/images/1.jpg

如果我在终端输入 bash getimage,它会下载图片。

但我想要的是在终端输入bash getimage 2bash getimage 3等,然后分别下载2.jpg3.jpg

基本上,我想在终端中输入一个数字 (bash getimage number) 并让它对应于 wget http://www.example.com/images/number.jpg.

正如 Aaron 在评论中提到的,您需要通过在脚本中将变量指定为 </code> 或 <code> 等来从外部提供变量。

这样做的方法是-

wget http://www.example.com/images/"".jpg

然后以 bash getimage 1

启动脚本

如果(我怀疑)你想 wget 循环,做-

for i in {1..10} ; do bash getimage "$i" ; done 

或者从命令行,

for i in {1..10} ; do wget http://www.example.com/images/"$i".jpg ; done 

这是我会做的:

#!/bin/bash
image_name=${1-1}
wget "http://www.example.com/images/$image_name.jpg"

该脚本将被调用为 getimage x。如果 x 被省略,1 将被选为默认值。

第一行是一个 shebang:它告诉您 shell 使用指定的可执行文件 /bin/bash.

执行脚本

第二行定义了一个image_name变量,并将表达式的结果赋给它。该表达式是一个参数扩展,如果已定义,它将 return </code>(即传递给脚本的第一个参数),或者 <code>1。在这种情况下很难看到,但语法是 ${variable-default},其中 variable 是您想要其值的变量名称,而 default 是未定义该变量时使用的默认值。

第三行是您的命令,其中静态 1 已替换为对 image_name 变量的引用。请注意,已添加 "" 以防 image_name 包含空格:这会将 url 分为两部分,wget 会将其理解为两个单独的参数。但是不要使用 '',字符串中包含的 $variable 不会扩展为它们的值。

您想要的最小脚本如下。

#!/usr/bin/env bash
wget "http://www.example.com/images/.jpg"

第一行调用了一个shebang The shebang tells the script which program to run it in. In this case we use the env程序,用于查找当前环境中bash的默认版本

在第二行,我们简单地 运行 您的 wget 命令,但我们传入了变量 </code>。这是一个称为 <a href="http://wiki.bash-hackers.org/scripting/posparams" rel="nofollow noreferrer">positional parameter</a> 的特殊变量,在本例中是传递给脚本的第一个参数。</p> <p>为了 运行 命令,使用 <code>chmod +x getimage 使其可执行,然后像这样调用它:

./getimage 1
./getimage 2
etc.