2014-12-15 4 views
0

У меня есть следующий простой Баш скрипт:Баш шаблон звездочкой

#!/bin/bash -fx 
ls *sh 

Проблема заключается в том, что Баш добавить цитату в шаблон и я получаю неправильный вывод.

+ ls '*sh' 
ls: cannot access *sh: No such file or directory 

Как я могу изменить это поведение?

Выход ls *sh из терминала:

$ls *sh 
a.bash a.sh b.sh 

Я пытался добавить цитаты согласно этому сообщению - «Bash variable containing file wildcard» без успеха

+1

никогда не использовать Ls в сценариях. Но если вы хотите использовать его как ls * .sh – tinySandy

+2

'-x' добавляет кавычки, потому что это то, что он делает. На самом деле это не то, что выполняется. Ваша проблема почти наверняка является одним из путей. Особенно, если вы пытаетесь запустить это из 'cron' или меню среды рабочего стола/ярлыка. –

+0

эй так почему я получаю «Нет такого файла или каталога» вместо реального выхода? (я запускаю сценарий из терминала в том же каталоге, что и я, «ls», и это не ярлык ...) –

ответ

8

Это потому, что вы отключив pathname expansion с -f вариант.

#!/bin/bash -fx 

От человека:

-f 
    Disable filename expansion (globbing). 
Смежные вопросы