Как запустить каждый скрипт в каталоге, кроме себя? - PullRequest
4 голосов
/ 05 октября 2009

На моей рабочей станции OS X есть папка с файлами * .command.

(Для тех, кто не знает, файлы * .command - это просто сценарии оболочки, которые запускаются и запускаются в специальном окне терминала).

Я перетащил эту папку на док-станцию, чтобы использовать «стек», чтобы можно было легко получить доступ к этим сценариям и запустить их одним щелчком мыши.

Я хочу добавить новый скрипт «run-all.command» в стек, который запускает все файлы * .command в одном стеке, за исключением очевидного самого себя.

Мои Bash чопы слишком ржавые, чтобы вспомнить, как вы получаете список файлов * .command, итерируете их, пропускаете запущенный файл и выполняете каждый (в этом случае я бы использовал команду "open", так каждая * .команда открывается в отдельном окне терминала).

Может кто-нибудь помочь мне?

Ответы [ 2 ]

3 голосов
/ 05 октября 2009

Используя оригинальный сценарий @ bbg в качестве отправной точки и включив комментарии @Jefromi и @Dennis Williamson, а также решая некоторые другие проблемы с префиксами каталогов, я пришел к этой рабочей версии:

#!/bin/bash
for x in "$(dirname $0)"/*.command
do
  if [ "$(basename $x)" != "$(basename $0)" ]
  then
    open "$x"
  fi
done
2 голосов
/ 05 октября 2009

Как насчет этого:

#! /bin/bash                                                                    

for x in ./*
do
        if [ "$x" != "$0" ]
        then
            open $x
        fi
done

где $ 0 автоматически содержит имя запущенного скрипта

...