Запуск .sh для выполнения нескольких команд

Мне было любопытно, как я буду запускать несколько команд с помощью сценария оболочки.

Например, просто, чтобы попробовать, я хотел бы иметь возможность подключать .desktop к .sh который будет запускать все коды обновлений, поэтому мне не нужно вводить его. Я знаю, как выполнить одну команду через .sh, а не несколько.

В любом случае?

1
задан 20 July 2014 в 04:50

1 ответ

Чтобы добавить несколько замечаний к отличному ответу @Wilf,

, вы можете запускать команды в paralell, если хотите по какой-либо причине, например, сценарий autostart для OpenBox может выглядеть так: это:

#!/bin/bash

nitrogen --restore &
tint2 &
tilda

Это установит фоновое изображение с помощью nitrogen, запустит панель tint2 и запустит консоль выпадающего меню Quake3 tilda, все одновременно. Это полезно, если вам не нужна программа для завершения, прежде чем запускать следующую. Не для apt-get update и apt-get upgrade, хотя!

Обратите внимание на знак & в конце каждой строки. Это заставит оболочку форкировать этот процесс в фоновом режиме и продолжить выполнение. Обратите внимание, что он отличается от &&, который в основном является значком and, command_1 && command_2 выполнит command_1, и если он завершится с успехом, только затем запустите command_2, а command_1 & command_2 запустит второй справа после первый.

Кроме того, вы могли бы просто складывать команды, чтобы они выполнялись серийно, например:

#!/bin/bash

apt-get update
apt-get upgrade

Это запустит apt-get upgrade после apt-get update is Не для apt-get update и apt-get upgrade, хотя! , но независимо от результата. Поэтому даже если, например, обновление завершается с сетевой ошибкой, обновление все равно будет выполняться.

Вы также можете сделать это в одной строке, используя знак ;: apt-get update ; apt-get upgrade. Опять же, это решение не является оптимальным для этих конкретных команд, но оно может пригодиться в других ситуациях.

Одним быстрым конечным пунктом вы также можете сломать строки, содержащие && как таковой:

command_1 &&
command_2

Это будет то же самое, что и command_1 && command_2.

4
ответ дан 24 May 2018 в 05:28

Другие вопросы по тегам:

Похожие вопросы: