LINUX.ORG.RU

Скрипт с копированием файлов!


0

0

Подскажите, plz, какая ошибка в этом скрипте: ********************* cp /dir1/file1 /dir2 cp /dir1/file2 /dir2 cp /dir1/file3 /dir2 cp /dir1/file4 /dir2 ********************* 1. Нужны ли ; в конце каждой строки? 2. Что произойдёт если файлы в /dir2 уже существуют? Спаибо за ответ!


#!/bin/bash
#
cp /dir1/file1 /dir2
cp /dir1/file2 /dir2
cp /dir1/file3 /dir2
cp /dir1/file4 /dir2
#
exit 0

End of file.

Вообще-то, твой скрипт должен был бы выглядеть так.

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

По поводу заданных вопросов:

1. Нет не надо (во всяком случае в Bourne и совметимых с ним оболочках: Korn, bash, bash2 /etc).

2. Если в terget directory уже соуществуют файлы, то копируемые будут дописаны к ним.
Если в директории существует файл с тем же именем, что и копируемый,
то возможны различные ситуации. А также от установки бита SUID и владельца файла скрипта; владельцев и прав доступа к файлам в target directory.
Рекомендую почитать
man cp
до наступления просветления.
Какие действия произойдут по умолчанию: почитай какие псевдонимы команд
действуют в настоящий момент. Команда:
alias
Опять же, советую почитать мануал.

Псевдонимы прописываются в файле ~/.bashrc

Good Luck!


Ikonta_521
()

Благодарю!

MaxVal
() автор топика

только в заголовке лучше ставить - #! /bin/sh

ananas ★★★★★
()

2ananas (*) (2002-09-11 14:09:12.016)

Не совсем согласен.

Почему:

1. sh - обозначение Bourne Shell, которая, как известно, обладает весьма скромными возможностями в деле написания скриптов. Единственный плюс - системные скрипты в Unix принято писать именно на нем.

2. Bourne Shell - коммерческий, "лицезионно грязный" программный продукт. В стандартной поставке Linux отсутствует, и прикручивать его ИМХО незачем.

3. Одним из условий, ставившихся перед разработчиками bash (Bourne Again Shell) - являлась полная совместимость с Bourne Shell.

P.S. Хотя в Линуксе, говоря sh подразумеваем bash (а скорее - bash2).

Ikonta_521
()

во всех виденных мной дистрибутивах /bin/sh был -- либо симлинком на bash либо какой-нибудь урезанной версией но был.

/bin/sh теперь означает не борн шелл а просто название обобщенного generic шелла от которого ожидается некоторая разумная совместимость с борн шел (ну или там с позиксом)

dilmah ★★★★★
()

>bin/sh теперь означает не борн шелл

Теперь, это, позвольте поинтересоваться с какого момента? Я об этом не слышал, просвети.

>просто название обобщенного generic шелла от которого ожидается некоторая разумная совместимость с борн шел

Насколько мне известно, требование полной совместимости с борном (т.е. правильного выполнения скриптов на борне) к /bin/sh все-таки предъявлялось.

P.S. А в Solaris 8 Intel Edition я видел НАСТОЯЩИЙ Bourne shell !!!

Ikonta_521
()

просто /bin/sh, как было замечено выше, обычно симлинк на дефолтный шелл. у меня, например, bash-а на машине вообще нет, мне вполне достаточно zsh. и я знаю еще парочку таких же кренделей, у которых баш и рядом не валялся :)) imho закладываться на конкретный шелл - моветон.

конечно, когда пишешь скрипт для себя, это все равно, что в заголовке, главное, чтобы работало :) но если собираешься его людям показывать, можно и про какую-никакую совместимость подумать.

единственный случай, когда обязательно надо четко указывать шелл - использование ну черезчур специфичных фенечек

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