Пожалуйста, рассмотрите этот простой скрипт с именем test :
#!/bin/bash
echo $1
и следующие команды и вызовы:
$ echo "A B"
A B
$ echo ""A B""
A B
$ echo """A B"""
A B
$ echo """A B"""
A B
$ ./test "A B"
A B
$ ./test ""A B""
A
$ ./test """A B"""
A B
$ ./test """"A B""""
A
Может кто-нибудь объяснить, почему вызов test не ведет себя как команда echo или не указывает на соответствующую документацию?
2
Уже есть тестовая команда, вам повезло, что вы использовали полный путь, в противном случае вам было бы сложно отладить ситуацию.
—
Руи Ф Рибейро
Лучше для такого типа теста использовать,
—
Чарльз Даффи
printf '%q\n' "$@"
а echo
не вообще, который будет выдавать ваши аргументы один на один со скрытыми символами и пробелами, экранированными в видимой форме.