Ошибка в скрипте с переменной

У меня есть начало скрипта. Подскажите в чем проблема.

test.sh

#!/bin/bash
username=ppp
chown $username /home/$username

Получаю chown: неверный пользователь: «ppp\r»


Ответы (1 шт):

Автор решения: Danny

В комментариях вам старшие товарищи написали, а потом вы же, по сути, подтвердили. Но им было лень разжевывать. А я попробую.

В Windows и Unix-подобных системах используются разные знаки перевода строки. Знак перевода строки - это такая штука, которая не выглядит как буква, но когда она в тексте есть, следующий символ пишется с новой строки. То, что вписывается в текстовый файл при нажатии клавиши Enter.

Так вот, в Windows там два байта, обозначаются они \r и \n. В десятичном представлении 13 и 10 соответственно. В linux там только \n, то есть, один байт.

Вы вписали в свой sh-скрипт строки с лишним байтом \r. Это не понравилось интерпретатору скрипта.

Когда же вы переписали сначала, символы перевода строки везде проставились правильные, только \n и никаких \r.

→ Ссылка