$ (хвост) в переменную, удаляющую \n

Я смог получить эту работу. Проблемой были каналы, были отключены звук. См. инструкции здесь: http://linsek.com/?q=node/12

1
24.12.2012, 05:48
2 ответа

двойные кавычки отсутствуют в эхе команды:

echo -e "$x" | ./perlscript 
5
27.01.2020, 23:12
  • 1
    Это - то.... Было бы хорошо понять почему differnce между echo -e "$x" и echo -e $x –  whoami 26.09.2012, 18:12
  • 2
    @whoami, посмотрите в странице справочника оболочки для "разделения слова" - когда Вы не заключаете переменную в кавычки, все последовательности пробела заменяются одиночным пробелом. –  glenn jackman 26.09.2012, 18:35
  • 3
    я не думаю, что это - единственная проблема. Я думаю это $(...) конструкции также отбрасывают конечный пробел. Засвидетельствуйте это A=$(printf "abc\n"); printf "<%s>" "$A" произведет <abc>. –  dubiousjim 26.09.2012, 19:03
  • 4
    , который я согласовываю, но эта ошибка должна была быть определенным –  Nahuel Fouilleul 26.09.2012, 19:35
  • 5
    @whoami Всегда использует двойные кавычки вокруг подстановок переменных и управляет заменами: "$x", "$(somecommand)". См. mywiki.wooledge.org/BashFAQ/020,$VAR по сравнению с $ {VAR} и заключить в кавычки или не заключить в кавычки –  Gilles 'SO- stop being evil' 27.09.2012, 02:03

Это намного более чисто и больше идиоматического способа пойти о том, что Вы пытаетесь сделать:

{ printf 'Hello to the world of tomorrow\n <pre>\n'
  tail -n 50 log/logfile.log
  printf '</pre>\n'; } | ./perlscript

Нет никакой причины, необходимо буферизовать весь, который производит в переменной сначала, когда Вы просто собираетесь продвинуть ее в порядке в канал так или иначе.

5
27.01.2020, 23:12

Теги

Похожие вопросы