2013-03-01 2 views
0

Надеюсь, я использую правильную терминологию здесь, но я хочу написать сценарий для выполнения в unix, который будет выполнять несколько команд последовательно (то есть один за другим). Могу ли я просто поставить команды, которые я хочу в блокноте, разделите их с символом новой строки, а затем сохранить его как script.sh, а затем сделатьКак написать ш-скрипт?

sh script.sh 
+0

Является ли Google Down? Я мог найти множество ответов на вопрос, когда я ввел его в поисковую строку ... – ppeterka

+0

Ваше утверждение верно, однако это не вопрос. –

+0

«Блокнот», вы имеете в виду текстовый редактор Windows? Вы используете Cygwin? Если да, следите за окончаниями линии; sh и bash на Cygwin обычно задыхаются в конце строки в стиле Windows. 'man dos2unix' для получения дополнительной информации. –

ответ

0

Вам потребуется shebang/hashbang в верхней

#!/bin/sh

+0

Вы не ..утверждение OP было правильным. –

+1

Да, просто попробовал. Ежедневный школьный день :-) – Rawkode

+0

Удивительный, спасибо, ребята! – TheFoxx

0

Вы должны убедиться, что бит выполнения установлен для вашего файла сценария. Кроме того, вы можете указать, какое приложение использовать для запуска вашего скрипта. По умолчанию, если вы не укажете приложение, оно по умолчанию будет использовать текущую оболочку, выполняющую ваш скрипт. Я обычно ставлю приложение специально, такие как следующие ...

#!/bin/bash 

Это будет указано, что bash следует использовать для обработки вашего сценария. Если вы получаете в какие-либо специальные сценарии, вы хотите быть специфичными, поскольку существует различие между sh, bash, ksh и т.д.

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

Одним из простых условий было бы использовать либо &&, либо || в вашем скрипте. Это позволит вам указать, что происходит, когда команда выполняется успешно или нет. Например ...

#!/bin/bash 

command1 || exit 
command2 || exit 
command3 

Это будет пытаться выполнить Command1 или выход, если не удается (код возврата выше 0). В противном случае он продолжит выполнение следующих строк.

Другой пример, который использует && синтаксис, что означает «и» ...

command1 && command2 && command3 

Наконец, вы можете проверить коды возврата конкретно и реагировать с сообщениями об ошибках.

#!/bin/bash 

command1 
if [ $? -gt 0 ] ; then 
    echo "command1 failed with error code $?" 
    exit 
fi 
command2 .... 

Этот последний пример представляет собой более сложный сценарий оболочки, но что-то, что вы, возможно, захотите продолжить. Если вы столкнетесь с условными сценариями, всегда помните, чтобы добавить свою shebang (#!/Bin/bash) для правильной оболочки.

0

Я тестировал это только в bash, но вы можете просто поместить каждую команду в свою линию, без shebang или что-нибудь необходимое. Вы должны будете предоставить файл разрешения на выполнение с CHMOD, то вы можете запустить его с

./myscript 

(при условии, что «MyScript» находится в текущем каталоге).

Смежные вопросы