Я хочу замінити \ 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, особливо в розділі "Використання додатків".