LINUX.ORG.RU

sed & shell troubles


0

0

Вообщем мне тут подсказали как выдрать слово из последней строки файла после определенного символа:

tail -n 1 "gg.txt" | sed -e "s/.*, //g"

то есть выдирает все после запятой и пробела (это слово hello)!

теперь так:

вот такой скрипт:

#!/bin/bash

tail -n 1 "gg.txt" | sed -e "s/.*, //g" > ll

{ read line1

}<ll

./speak.sh $line1

перенаправляет то что выдрал в ll, далее запускает следующий скрипт с параметром = значению line1, который выглядит так:

#!/bin/bash

echo $1

{ read line1

} < "$1"

echo "$line1"

и должен мне напечатать первую строку файла с именем равным значению $1 то есть файла hello.

НО!!!

вместо этого я получаю

: No such file or directory

притом $1 печатается эхом, но ввод из этого файла не происходит!

если я запишу в ll hello сам ручками, и уберу строку с sed то все сработает на ура!

Итак вопрос ПОЧЕМУ?

может проблема с перекодированием?

помогите плз заранее спасибо.

anonymous

В первом скрипте
  sed -e "s/.*, //g"
поменяйте на 
  sed 's/.*, //g'
* - в двойных кавычка воспринимается как шаблон имени файла.
Параметр -e для sed указывает на имя файла в котором
содержиться скрипт sed-а. Здесь он не нужен.

kosmonavt
()

Что за файл gg.txt, случайно не в Dos кодировке? Возможно к слову hello прицепилось еще ^M, проверить надо в первом скрипте: echo $line1 | wc -c или echo $line1 | od -x

для значения из файла и значения вбитого руками

Chumka ★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.