这是我的计划:
#!/bin/bash
message=( 'somewebsite1' 'somewebsite2' 'somewebsite3' 'somewebsite4' )
for i in "${message[@]}"
do
longUrl=$(sed -ne 's/.*\(https\{0,1\}:\/\/[^"]*\).*/\1/p' "$i" | head -n 1)
if test "$longUrl"; then
echo "Shortening Url $longUrl ..."
shortUrl=$(curl -s https://www.googleapis.com/urlshortener/v1/url -H 'Content-Type: application/json' -d "{'longUrl': '$longUrl'}" | python -c 'import json, sys; print(json.load(sys.stdin)["id"])')
message=${message/$longUrl/$shortUrl}
printf "%s\n" "$i" >> file.txt
fi
done
</pre>
我试图通过将URL全部放入数组来缩短URL,但在运行之后,我收到以下错误:
sed:somewebsite1:没有这样的文件或目录
sed:somewebsite2:没有这样的文件或目录
sed:somewebsite3:没有这样的文件或目录
sed:somewebsite4:没有这样的文件或目录
谢谢!
答案 0 :(得分:1)
如果您向sed
提供 argument ,则会将其视为路径。您需要在standard input上提供输入:
sed -e '...' <<< "$i"
此外,如果您不熟悉shell编程,可能需要将生成的工作脚本发布到Code Review以获取提示。