Intereting Posts
Как восстановить предыдущую конфигурацию группы томов LVM? Приложение «Темы» не показывает предварительный просмотр установленных тем GTK (границы окна и элементы управления) в Cinnamon Карта DNS-запросов, поступающих с определенного клиентского MAC с помощью dnsmasq запуск демона службы докеров прерывает сеть vpn Инициализировать подключенную USB-клавиатуру Избегание временных файлов в zsh Red Hat с rpc.statd не работает и не может запускать nfslock Как установить правильное время на Centos 7? Есть ли какой-нибудь инструмент для WinSpy ++ для Linux / X / GTK / QT? Просмотр только новых записей в растущем файле журнала Скопировать новейший файл в каталог через SSH Возможно / практично ли использовать сервер Linux для аутентификации устройств Windows? Как использовать capsh: я пытаюсь запустить непривилегированный пинг с минимальными возможностями Почему моя новая файловая система ext4 уже отмечена как используемая? Буферы TCP продолжают заполняться (Recv-Q full): он называется unresponsive

Почему расширение файла glob не подавляется

У меня есть следующий скрипт my.sh :

 echo $@ 

Теперь я хочу увидеть расширение файла glob, поэтому мне нравится это, и он работает нормально:

 $ bash my.sh * $ f1 f2 my.sh 

Теперь я попытался подавить расширение, используя методы, описанные в этом ответе :

 $ bash my.sh "*" $ bash my.sh \* 

Но я все равно получаю список всех файлов в качестве вывода. Зачем?

При первом вызове вашего скрипта

 $ bash my.sh * 

имя файла globbing выполняется оболочкой перед вызовом сценария.

При втором вызове вашего скрипта

 $ bash my.sh "*" 

имя файла globbing выполняется в скрипте при запуске echo $@ .

Чтобы этого избежать, двойная кавычка $@ на эту строку:

 echo "$@" 

Дальнейшее чтение: последствия для безопасности забывания при цитировании переменной в оболочках bash / POSIX