Как мне заставить growlnotify отображать многострочное сообщение из командной строки?

#macos #growl #growlnotify

#macos #growl #growlnotify

Вопрос:

С помощью growlnotify как я могу отобразить несколько строк текста из командной строки?

Косая черта-n — n — похоже, это не работает:

 growlnotify -t title -m "messageline1nmessage2"
  

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

Ответ №1:

Предполагаемый экранированный перевод новой строки не интерпретируется growl как таковой — он просто трактуется как буквенная косая черта, за которой следует ‘en’.

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

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

Смотрите (например) Unix command sh:

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

Ответ №2:

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

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

mynotify "This is line 1" "Line 2" "The 3d line ends with an extra newlinen" "Line 4"