Для такой команды в bash:
echo -e "a b "{1..3}" d e\n"
a b 1 d e
a b 2 d e
a b 3 d e
вывод строки 2 ... начинается с пробела. Почему это? Откуда это взялось? Как мне этого избежать?
Я знаю, как избавиться от этого с помощью sed или чего-то еще, но я бы предпочел избегать этого в первую очередь.
Я только упомянул об этом вместе с {..} - Синтаксисом. Есть ли другие подобные случаи без него?
Полезный обходной путь - удалить первую букву с обратным пробелом:
echo -e "\ba b "{1..3}" d e\n"
или, как предлагает Джаред Нг:
echo -e "\ra b "{1..3}" d e\n"
Мы избавляемся от ведущих символов новой строки с помощью:
echo -e "\na b "{1..4}" d e" | sed '1d'
echo -e "\na b "{1..4}" d e" | tail -n +2
или в конце:
echo -e "\ba b "{1..3}" d e\n" | sed '$d'
echo -e "\ba b "{1..3}" d e\n" | head -n 3