Предположим, что я хочу запустить все скрипты в каталоге. Если я сделаю ./*.sh, в каком порядке они будут работать?Запуск файлов с помощью команды * в linux
Каталог: 1.sh 2.sh 3.sh
Предположим, что я хочу запустить все скрипты в каталоге. Если я сделаю ./*.sh, в каком порядке они будут работать?Запуск файлов с помощью команды * в linux
Каталог: 1.sh 2.sh 3.sh
Чтобы запустить все скрипты, вы должны запустить их отдельно:
for f in ./*; do
"$f"
done
узор будет производить в алфавитном порядке отсортированный список сценариев, где «алфавитный» определяется по текущей локали.
Попытка:
./*
будет расширяться список соответствующих файлов, которые оболочка затем обработать как одну команду. Первый скрипт будет выполнен, а остальные имена сценариев переданы в качестве аргументов для первого.
Хороший ответ! Не ожидал бы этого. – hek2mgl
Они сортируются в алфавитном порядке. Из bash manual:
После слова расщеплению, если опция -f не установлена (см Set BUILTIN), Bash сканирует каждое слово для символов «*», и «[» «?». Если появляется один из этих символов, это слово рассматривается как шаблон и заменяется алфавитно отсортированным списком имен файлов, соответствующих шаблону.
Однако для того, чтобы запустить их, как вы ожидаете, вы будете нужно читать @chepners ответ (Спасибо !, я должен признать, что я не ожидал, что)
Теперь, когда вы знаете заказ по умолчанию, вы можете попробовать некоторые трюки с сортировкой ls, если вы хотите заставить скрипты работать в другом порядке. Например, сортировка их по алфавиту: «ls * .sh -r | xargs -I% bash%» или по времени создания: «ls * .sh -t | xargs -I% bash%» – Kevin
Вы попробовали? Каков был результат? –
Похоже на вопрос «суперпользователя» ..... – KevinDTimm
@JimGarrison Просто попробуйте, этого здесь не хватит. На наблюдаемый вывод могут влиять некоторые неизвестные настройки. Это определенно не вопрос '-2'. Просто попробовав что-то, и рассуждая, что это будет работать на всех других машинах, это действительно БЕСПЛАТНАЯ практика. Плохой комментарий для 35k .. Но что значит 35k ..... :) – hek2mgl