Как заставить bash не рассматривать [ как тестовый символ при использовании подстановки команд? [дубликат]

Si sigue las instrucciones aquí , debería resolver su problema. Básicamente, el método es:

  1. Inicie el CD en vivo.
  2. chroot en la partición Kali instalada después de montar dispositivos de enlace y sistemas de archivos especiales
  3. Ejecutar grub-install /dev/yupdate-grub

Alternativamente, puede hacer lo siguiente:

  1. Inicie la instalación de Kali. Si puedes de BCD bien. Si no, intente iniciarlo desde el CD de instalación de Kali.
  2. Ejecutar grub-install /dev/yupdate-grub

0
07.09.2018, 02:12
1 ответ

Проблема в том, что подстановка команды сама по себе не заключена в кавычки. Когда подстановка команд использует вывод команды echoв качестве аргумента для второй команды echo, результаты команды подвергаются как разбиению на слова, так и подстановке файлов. Как указано в комментариях, символы в квадратных скобках [127.0.0.1]будут соответствовать любым файлам, имя которых состоит ровно из одного символа и является одним из 1, 2, 7или 0(, шаблон будет match .только оболочка игнорирует ссылки на каталоги .и ..). Когда я создал файл с именем 1, я смог воспроизвести ваш результат.

Чтобы избежать подстановки результатов подстановки команд, следует заключить их в двойные кавычки:

echo "$(echo "This will show an IP address in square brackets: [127.0.0.1]")"

См. также следующие связанные статьи из Вики Грега (, в частности, первую, в которой рассматривается необходимость двойного -цитирования как внутри, так и вне подстановки команд):

3
28.01.2020, 02:23

Теги

Похожие вопросы