LINUX.ORG.RU

[shell]


0

0

Допустим есть скрипт. Есть у него две секции: к примеру

!#/bin/sh

секция 1

секция 2

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


Ответ на: Re: [shell] от Dudraug

Re: [shell]

Дай пример чтоли.

ShTH ()
Ответ на: Re: [shell] от ShTH

Re: [shell]

#!/bin/sh

if [ "$1" = "-man"];
then
    echo Читай маны
else
    echo Читай маны
fi

alex_custov ★★★★★ ()
Ответ на: Re: [shell] от alex_custov

Re: [shell]

>echo Читай маны

мб лучше таки advanced shell scripting? ;)

generatorglukoff ★★ ()

Re: [shell]

#!/bin/bash if [ "$@" = "a" ]; then Первый блок else Второй блок fi

Dudraug ★★★★★ ()
Ответ на: Re: [shell] от Dudraug

Re: [shell]

#!/bin/bash
              
               if [ "$@" = "a" ]; then
                  Первый блок
              else
                  Второй блок
              fi

Dudraug ★★★★★ ()
Ответ на: Re: [shell] от Dudraug

Re: [shell]

да, и ты тоже маны почитай ;)

alex_custov ★★★★★ ()
Ответ на: Re: [shell] от alex_custov

Re: [shell]

А что не так? )

Dudraug ★★★★★ ()
Ответ на: Re: [shell] от Dudraug

Re: [shell]

$@ - это список аргументов

alex_custov ★★★★★ ()
Ответ на: Re: [shell] от alex_custov

Re: [shell]

>$@ - это список аргументов

Для случая когда аргумент один вполне подходит. Ну если их больше то да $1 $2 без этого некуда.

Dudraug ★★★★★ ()
Ответ на: Re: [shell] от Dudraug

Re: [shell]

если их будет случайно два, скрипт вообще работать не будет

alex_custov ★★★★★ ()
Ответ на: Re: [shell] от alex_custov

Re: [shell]

Нет, не совсем то.Повторюсь :
!#/bin/sh

СЕКЦИЯ 1
команда 1



СЕКЦИЯ 2
команда 2


если мы запускаем:
./script -param1 - выполняется лиш команда ( команды) из первой секции. Если запускаем с param2 то из второй.


ShTH ()
Ответ на: Re: [shell] от Dudraug

Re: [shell]

#!/bin/bash
            if [ "$1" = "a" ]; then
                echo Работает секция 1
                echo Правда
                cd /bin
                ls
            else
                echo Секция два работает
                echo Ничего не покажу же
            fi


Выполни

Dudraug ★★★★★ ()
Ответ на: Re: [shell] от Dudraug

Re: [shell]

>#!/bin/bash
>            
>               if [ "$@" = "a" ]; then
>                  Первый блок
>              else
>                  Второй блок
>              fi



Тут как я понял параметр это "a"
Но мне нужно, чтобы с одним параметром выполнялся только  один блок, а с другим только другой блок

ShTH ()
Ответ на: Re: [shell] от ShTH

Re: [shell]

#!/bin/sh

if [ "$1" = "-param1" ]; then
    echo Читай маны1
    man bash
elif [ "$1" = "-param2" ]; then
    echo Читай маны2
    man sh
else
    echo Робкий отказ
fi

alex_custov ★★★★★ ()
Ответ на: Re: [shell] от alex_custov

Re: [shell]

То, что надо. Спасибо.

ShTH ()
Ответ на: Re: [shell] от ShTH

Re: [shell]

Вот только не ясно одно: elif , else ... в каком порядке ? Подсветка синтаксиса какбе намекае, что это не самостоятельно выдумывается

ShTH ()
Ответ на: Re: [shell] от ShTH

Re: [shell]

Базовый курс программирования здесь читать или как? Догадаться, что elif == else if, религия не позволяет?

...а потом они работают сисадминами и доставляют на TDWTF.

shimon ★★★★★ ()

Re: [shell]

case "${1}" in
a)
echo 'Читай маны'
;;
b|c|d|e)
echo 'Все равно читай маны'
;;
fghijklmn|opqrstu)
echo 'Всегда читай маны'
;;
*)
echo 'Каждый день читай маны'
;;
esac

YAR ★★★★★ ()

Re: [shell]

too fat

Дата регистрации: 19.11.2008 7:14:46

anonymous ()

Re: [shell]

вижу, местные анонимусы совсем позабыли про величественный стиль sh...
вот вам в назидание:

#!/bin/sh
function section_first() {
  echo "working with first section";
};

function section_second() {
  echo "working with second section";
};

case "$1" in
  ("man")
    section_second;
  ;;
  (*)
    section_first;
  ;;
esac;

anonymous ()
Ответ на: Re: [shell] от anonymous

Re: [shell]

> величественный стиль sh...

/tmp/ttt.sh: 3: Syntax error: "(" unexpected

В sh нет слова function.  Это какой-то башизм.

Функции объявляются так:

section_first() {
  echo "working with first section";
};

dilmah ★★★★★ ()

Re: [shell]

И это ламерьё считает себя в достаточной степени супер-пупер-гуру-линуксоидом, чтобы высокомерно гнать на пользователей компиз. Ну разве не чмо?

anonymous ()
Ответ на: Re: [shell] от dilmah

Re: [shell]

>sh нет слова function. Это какой-то башизм. благодарю %)

anonymous ()
Ответ на: Re: [shell] от anonymous

Re: [shell]

> супер-пупер-гуру-линуксоидом

не считаю. Просто мне не понятен смысл компиза. А ты толст.

ShTH ()
Ответ на: Re: [shell] от ShTH

Re: [shell]

>не считаю. Просто мне не понятен смысл компиза. А ты толст.

Я не понимаю смысла вселенной. Вселенная не нужна.

Dudraug ★★★★★ ()
Ответ на: Re: [shell] от Dudraug

Re: [shell]

+1 и жизнь не нужна.

wfrr ★★☆ ()

Re: [shell]

.ля! давайте ещё всем коллективом hello world сочинять!

beastie ★★★★★ ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.