Форум русскоязычного сообщества Ubuntu


Увидели сообщение с непонятной ссылкой, спам, непристойность или оскорбление?
Воспользуйтесь ссылкой «Сообщить модератору» рядом с сообщением!

Автор Тема: Параметризация перенаправления в bash  (Прочитано 996 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн 0xEEd

  • Автор темы
  • Любитель
  • *
  • Сообщений: 61
    • Просмотр профиля
Хотел сделать следующее: если передан параметр с именем файла, то выводить в него, иначе - в stdout. Но что бы в скрипте постоянно не проверять if-then завел переменную, которую думал добавлять в конец комманд echo. Текст примерно такой:
ToOutput=">&1"
if [ $1 ]; then
ToOutput=">>$1"
fi
echo "ВыводимаяСтрока"$ToOutput

Проблема в том, что перенаправление в переменной интерпретируется bash'ем как строка. Пробовал по-всякому: с разными кавычками и $(...), но никак не сообразить. Подскажите пожалуйста, как это делается?

Пользователь решил продолжить мысль 08 Августа 2010, 20:06:25:
Вопрос решился передачей выражения встроенной в оболочку комманде eval:
eval "echo \"ВыводимаяСтрока\"$ToOutput"
« Последнее редактирование: 08 Августа 2010, 20:06:25 от 0xEEd »

Оффлайн Mam(O)n

  • Старожил
  • *
  • Сообщений: 5855
    • Просмотр профиля
Re: Параметризация перенаправления в bash
« Ответ #1 : 09 Августа 2010, 13:40:34 »
#!/bin/bash
out=/dev/stdout
[ ! -z "$1" ] && out=$1
echo "Hello!" >> $out

Оффлайн ArcFi

  • Старожил
  • *
  • Сообщений: 15189
    • Просмотр профиля
    • aetera.net
Re: Параметризация перенаправления в bash
« Ответ #2 : 09 Августа 2010, 13:52:49 »
Код: (bash) [Выделить]
out=${1:-/dev/stdout}

Оффлайн Mam(O)n

  • Старожил
  • *
  • Сообщений: 5855
    • Просмотр профиля
Re: Параметризация перенаправления в bash
« Ответ #3 : 09 Августа 2010, 14:44:02 »
Точно! Так лучше, но кмк, bash-only.

Оффлайн 0xEEd

  • Автор темы
  • Любитель
  • *
  • Сообщений: 61
    • Просмотр профиля
Re: Параметризация перенаправления в bash
« Ответ #4 : 10 Августа 2010, 09:58:02 »
:) супер! Как писал Чехов: "Краткость - сестра таланта".  СпасИб0!

 

Страница сгенерирована за 0.048 секунд. Запросов: 25.