我希望这个Bash脚本能够:
URLS
PATH
这是我到目前为止所得到的:
#!/bin/bash
URLS=$(<urls.txt)
read -e -p "Please enter the path of the directory you'd like to save your files to: " PATH
for link in $URLS
do
wget --background --tries=45 $URLS --directory-prefix $PATH
done
exit 0
我的预感是我没有正确使用$PATH
wget
,因为如果我发表评论--directory-prefix $PATH
,脚本将正常运行。
提前感谢您的帮助。
答案 0 :(得分:1)
PATH
是一个具有保留含义的环境变量:它用于查找要执行的二进制文件的位置。
使用非保留名称以避免覆盖它,例如path
;这个约定是explicitly given in the POSIX specification,以避免覆盖对系统有意义的环境变量。重点引用:
IEEE Std 1003.1-2001的Shell和Utilities卷中的实用程序使用的环境变量名称仅由大写字母,数字和可移植字符集中定义的字符的“_”(下划线)组成,并且不会开始有一个数字。实现可以允许其他字符;申请应容忍此类名称的存在。大写和小写字母应保留其独特的身份,不得折叠在一起。 为应用程序保留包含小写字母的环境变量名称的名称空间。应用程序可以使用此名称空间中的名称定义任何环境变量,而无需修改标准实用程序的行为。
...即使对于未明确export
环境的shell变量也是相关的,因为对名称与环境变量(例如PATH
)重叠的shell变量的赋值是隐式的覆盖后者。
因此,您的代码可能如下所示:
#!/bin/bash
read -e -p "Please enter the path of the directory you'd like to save your files to: " path
while IFS= read -r link; do
wget --background --tries=45 --directory-prefix "$path" "$link"
done <urls.txt
另见:
for
迭代将被解释为面向行的数据的注意事项。