Подтвердить что ты не робот

Как я могу получить Mac ".command" файл для автоматического выхода после запуска оболочки script?

В моей оболочке script мои последние строки:

...
echo "$l" done
done

exit

У меня установлен параметр "Предпочтение терминала": "Когда оболочка выходит: Закройте окно". Во всех остальных случаях, когда я набираю "exit" или "logout", в Terminal закрывается окно, но для этого файла ".command" (я могу дважды щелкнуть файл my script и script выполняется), вместо закрытия окна, в то время как в коде файла указано "exit", то, что отображается на экране, является:

...
$l done
logout

[Process completed]

... и окно остается открытым. Кто-нибудь знает, как запустить оболочку script, а затем просто автоматически выйти из окна терминала при завершении?

Спасибо!

4b9b3361

Ответ 1

Наконец-то я смог найти ответ на этот вопрос. Подобно cobbal answer, он вызывает AppleScript, но поскольку это единственное окно, которое у меня было бы открыто, и я хочу запустить мой script в качестве быстрой операции open-and-close, этот более жестокий подход отлично подходит для меня.

В самой команде ".command" script "... добавьте эту строку в ваш script в конце"

osascript -e 'tell application "Terminal" to quit' &
exit

ИСТОЧНИК: http://forums.macosxhints.com/archive/index.php/t-2538.html

Ответ 2

Это сработало отлично для меня.. он просто закрывает это окно выполнения, оставляя открытыми другие окна терминала

Просто откройте "Терминал" и перейдите в "Терминал" > "Настройки" > "Настройки" > "Шелл": > Когда оболочка завершает работу: → Закрыть, если оболочка вышла из строя

Затем просто добавьте exit; в конце вашего файла.

Ответ 3

Используйте "Terminal" > "Настройки" > "Настройки" > "Shell": > Когда оболочка завершает: → Закрыть, если оболочка вышла чисто ", упомянутая выше, но поместите

exit 0

в качестве последней строки вашего командного файла. Это гарантирует, что script действительно выполняет "чистое завершение" - иначе, если предыдущая команда не вернет успех, окно не будет закрыто.

Ответ 4

В приложении терминала есть настройка. К сожалению, это относится ко всем окнам терминалов, а не только к запущенным через файл .command.

Ответ 5

вы можете использовать некоторые взлома applescript для этого:

tell application "Terminal"
    repeat with i from 1 to number of windows
        if (number of (tabs of (item i of windows) whose tty is "/dev/ttys002")) is not 0 then
            close item i of windows
            exit repeat
        end if
    end repeat
end tell 

заменив /dev/ttys002 на ваш tty

Ответ 6

Я использую следующую команду в своем script

quit -n terminal

Конечно, перед закрытием обязательно должен быть установлен терминал.

Ответ 7

Если вам не нужно использовать вышеперечисленные решения AppleScript, это единственное решение для работы с оболочкой script (exit), даже если оно внезапно для меня (проверено в OS X 10.9):

...
echo "$l" done
done

killall Terminal

Конечно, это убьет все запущенные экземпляры терминала, поэтому, если вы работали над окном терминала перед запуском script, он также будет прерван. К счастью, перезапуск терминала приводит вас к состоянию "Восстановлено", но, тем не менее, это должно рассматриваться только для случаев с краями, а не как чистое решение.