我有一个包含多个网址list.txt
列表的文本文件。我正在尝试向此列表中的每个搜索字符串添加一个变量,以便像https://www.google.com/search?q=
这样的行将附加变量"$v"
或其正确的等效内容,看起来像https://www.google.com/search?q="$v"
< / p>
我的目标是执行类似下面的代码,以便每次执行脚本时,list.txt
中的变量都可以重新定义。但我似乎无法弄清楚如何将"$v"
中的list.txt
解释为用户指定的变量。
#!/bin/bash
echo "Enter you query"
read -p "" v
cat list.txt | while read urls; do
lynx -dump -listonly -get_data "$urls"; done
编辑 - 应该注意的是,对于此列表中的某些网址,搜索字符串不在该行的末尾。例如http://example.com/?s="${v}"&x=0&y=0
其中"{v}"
是我要放置的变量。
答案 0 :(得分:2)
为什么不这样做:
lynx -dump -dump -listonly -get_data "${urls}${v}"
"${urls}${v}"
将为https://www.google.com/search?q=
加foo
(如果foo
是用户输入)。
简单示例
输入
$ cat urls.txt
http://example.com/q=
http://example.com/r=
变量:
$ v=foo
循环:
$ cat urls.txt| while read url
do
echo "${url}${v}"
done
输出:
http://example.com/q=foo
http://example.com/r=foo
答案 1 :(得分:2)
sed
无需循环即可处理此问题
$ cat urls
http://example.com/q={v}&x=0
http://example.com/q=1&r={v}&z=0
$ v=foo; sed "s/{v}/$v/" urls
http://example.com/q=foo&x=0
http://example.com/q=1&r=foo&z=0
使用标记(此处为{v}
)指定变量的位置并进行替换。