Как я могу получить growlnotify, чтобы показать многострочное сообщение из командной строки?

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

Слэш-н - \n - похоже, что это не работает:

growlnotify -t title -m "messageline1\nmessage2"

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

2 ответа

Решение

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

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

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

Смотрите (например) Unix команду sh:

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

Я считаю, что в скриптах проще и намного удобнее читать небольшую функцию и echo"s -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"
Другие вопросы по тегам