sed错误“没有这样的文件或目录”

时间:2014-11-12 18:23:32

标签: bash url sed

这是我的计划:     

    #!/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:没有这样的文件或目录

谢谢!

1 个答案:

答案 0 :(得分:1)

如果您向sed提供 argument ,则会将其视为路径。您需要在standard input上提供输入:

sed -e '...' <<< "$i"

此外,如果您不熟悉shell编程,可能需要将生成的工作脚本发布到Code Review以获取提示。