Как я могу получить growlnotify, чтобы показать многострочное сообщение из командной строки? - PullRequest
2 голосов
/ 14 ноября 2011

Использование growlnotify как отобразить несколько строк текста из командной строки?

Slash-n - \n - похоже, это не работает:

growlnotify -t title -m "messageline1\nmessage2"

Я просто получаю сообщение messageline1\nmessage2

Ответы [ 2 ]

2 голосов
/ 15 ноября 2011

Намеренный экранированный символ новой строки не интерпретируется как таковой рычагом - он рассматривается как буквальная косая черта, за которой следует 'en'.

Вы можете заставить оболочку вставить новую строку в строку таким образом:

growlnotify -t title -m "messageline1"$'\n'"message2"

См. (Например) Unix-команда sh :

Слова вида $ 'string' обрабатываются специально,Слово расширяется до строки, символы с обратной косой чертой заменяются в соответствии со стандартом ANSI C.

0 голосов
/ 12 июля 2012

Мне кажется, что в сценариях проще и намного удобочитаемее использовать небольшую функцию и опцию echo -e:

mynotify () {
    for m in "$@"; do
        local msg="$msg\n$m"
    done
    echo -e "$msg" | growlnotify -t "My Title"
}

mynotify "This is line 1" "Line 2" "The 3d line ends with an extra newline\n" "Line 4"
...