Я делал одноразовый скрипт, называя его просто a, и я получил очень удивительную ошибку; скрипт содержал несколько ipv6-адресов в квадратных скобках, в том числе букву a.
Я получил сообщение о том, что a не является действительным адресом ipv6. Итак, я экспериментировал, и я думаю, что нашел очень неясную ошибку. Или квадратные скобки имеют другое значение, чем я думаю.
Попробуйте этот код в bash, sh или csh
mkdir /tmp/temp123
cd /tmp/temp123
echo [123abc]
touch a
echo [123abc]
Вывод
[123abc]
a
Мой вывод таков:
ЕСЛИ файл с односимвольным именем файла существует в текущем каталоге
И этот символ находится где-нибудь между []
И есть пробелы снаружи [] (x [abc] y не работает)
, то оболочка заменяет всю подстроку, включая [].
Двух- (или более?) - имена файлов символов не влияют на это.
WTF?!?