Я хочу замінити \ n символом.
echo -n "s\n" |tr "\n" "a"
s\n
Чому не можна отримати sa як результат?
Я хочу замінити \ n символом.
echo -n "s\n" |tr "\n" "a"
s\n
Чому не можна отримати sa як результат?
Відповіді:
Від man echo
:
-e
включити інтерпретацію відхилень від косої риски
Вашим відлунням може бути вбудована оболонка (спробуйте type echo
). Якщо так, використовуйте help echo
замість man echo
. Але слід сказати те саме про -e
варіант.
Без цього параметра \n
рядок друкується буквально, а не як канал рядка. Повідомлення tr
не потребує спеціального варіанту для роботи, як ви очікували.
Фіксована команда:
echo -ne "s\n" | tr "\n" "a"
Користувач Гордон Девіссон вказав на деякі речі. Вони здаються досить важливими, щоб включити їх у свою відповідь для подальшого ознайомлення. З цього моменту вся заслуга переходить до Гордона .
Різні версії
echo
дуже непослідовні щодо втечі та варіантів. Деякі будуть інтерпретувати послідовності втечі без-e
. Деякі надрукують "-e" як частину своєї продукції. Деякі роблять… інші речі. Для таких речей використовуйтеprintf
натомість (як вprintf "s\n"
). Див. Специфікацію POSIXecho
, особливо в розділі "Використання додатків".
echo
дуже непослідовних WTR- шляхів і варіантів. Деякі інтерпретуватимуть послідовності втечі без-e
. Деякі надрукують "-e" як частину своєї продукції. Деякі роблять ... інші речі. Для таких речей використовуйтеprintf
натомість (як вprintf "s\n"
). Див. Специфікацію POSIXecho
, особливо в розділі "Використання додатків".