2014-11-12 4 views
0

Вот моя программа: СЕПГ Ошибка «Нет такого файла или каталога»

 
    #!/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, помещая их все в массив, но после того, как я бегу, я получаю следующее сообщение об ошибке:

СЭД: somewebsite1: Нет такого файла или каталога
СЭД: somewebsite2: Нет такого файла или каталога
СЭД: somewebsite3: Нет такого файла или каталога
СЭД: somewebsite4: Нет такого файла или каталога

Спасибо!

+0

sed ожидает файл как свой вход, а не строку. ваши аргументы интерпретируются как имена файлов, а не как фактический текст для обработки. –

ответ

1

Если вы даете sedargument будет рассматривать его как пути. Вы должны дать вход на standard input:

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

Кроме того, если вы новичок в оболочку программирования вы можете опубликовать полученный рабочий скрипт для Code Review советов.

+0

Ничего себе! Это сработало ... однако в итоге я получаю одни и те же URL-адреса вместо уникальной для каждой записи: http://goo.gl/uf9Kk9 x 4 –

Смежные вопросы