Не очень хороший сценарий, но тогда вы не используете его, как будто он предназначен для работы ИМХО.
/script/location/directory/lsc.sh -la
$ 1: -la
$ 2: ничего
/script/location/directory/lsc.sh -la *something*
Оболочка выполняет расширение по шаблону следующим образом:
/script/location/directory/lsc.sh -la 1something1 2something2 3something3 ...
Таким образом, расширение по шаблону происходит за до вызова сценария.
Следовательно, с последним вызовом lsc.sh:
$ 1: -la
$ 2: 1something1
и скрипт выполняет ls $1 $2
, поэтому только первыйкаталог обрабатывается, это то, что вы видите.
Если вы хотите, чтобы он обрабатывал все аргументы, после расширения с подстановочными знаками замените:
ls $1 $2 | grep -v $$.tmp >> ${HOME}/$$.tmp
на
args=$1
shift
ls $args $@ | grep -v $$.tmp >> ${HOME}/$$.tmp
Я нашел скрипт здесь: https://www.tek -tips.com / faqs.cfm? Fid = 6627
Одна из самых распространенных ссылок, которые вы увидите здесь,«Почему не анализ ls
» по ссылке https://unix.stackexchange.com/questions/128985/why-not-parse-ls-and-what-do-to-instead
Еще одна вещь, которую я не могу гарантировать, что это исправление будет работать для всех условий подстановочных знаков, поэтому оно предоставляется «как есть», YMMV.