Welcome, guest! Login / Register - Why register?
Psst.. new poll here.
Psst.. new forums here.
Microsoft is blocking us again (TY IP Reputation!) so just use oauth login instead. :)

Paste

Pasted as Bash by BLUE MAN ( 15 years ago )
#!/bin/csh
set ARGCOUNT=3

set E_GOOD=0
set E_ARGCOUNT=1
set E_FROM_NOT_EXIST=2
set E_FROM_NOT_X=3
set E_CURDIR_NOT_W=4
set E_BAD=5
set E_NAME_NOT_EXIST=6
set E_NAME_NOT_X=7
set E_NAME_NOT_R=8
set E_FROM_CURDIR_EQUAL=9
set E_NAME_BAD_SYMBOL=10

if ( $#argv < $ARGCOUNT ) then
    echo "Передано менее трех параметров"
    exit $E_ARGCOUNT
endfi

if ( ! -d "$1" ) then
    echo "Каталог $1 не существует"
    exit $E_FROM_NOT_EXIST
endfi

if ( ! -x "$1" ) then
    echo "Каталог $1 не доступен для исполнения"
    exit $E_FROM_NOT_X
endfi

if ( ! -w "$(pwd)" ) then
    echo "Каталог $(pwd) не доступен для записи"
    exit $E_CURDIR_NOT_W
endfi

if ( "$(pwd)" == "$1" ) then 
    echo "Каталог FROM и текущий каталог совпадают"
    exit $E_FROM_CURDIR_EQUAL
endfi

if ( ! -f "$1"/"$2" ) then
    echo "Файл $2 не существует"
    exit $E_NAME_NOT_EXIST
endfi
 
if ( ! -x "$1"/"$2" ) then
    echo "Файл $2 не доступен для исполнения"
    exit $E_NAME_NOT_X
endfi

if ( ! -r "$1"/"$2" ) then
    echo "Файл $2 не доступен для чтения"
    exit $E_NAME_NOT_R
endfi

set sindProg=`echo $2 | awk '{print index($2,"/")}'`
if ( $sindProg != 0 ) then 
    echo "Файл NAME содержит недопустимый символ /"
    exit $E_NAME_BAD_SYMBOL
endif


#PROG=$2
#if [ "${2}" != "${PROG#*/*}" ]; then
# echo "Файл NAME содержит недопустимый символ /"
#        exit $E_NAME_BAD_SYMBOL
#fi



set ARG1=$1
set ARG2=$2
set KEY=0
while ( ! -z "$3" ) do
 if ( ! -f "$ARG1"/"$3" ) then
         echo "Файл $3 не существует"
        else
            set sindFILENAME=`echo $3 | awk '{print index($3,"/")}'`
                   if ( $sindFILENAME != 0 ) then 
                   echo "Файл "$3" содержит недопустимый символ /"
          else
            if ( ! -r "$ARG1"/"$3" ) then
                echo "Файл $3 не доступен для чтения"
            else
                if ( -f "./$3" ) then
                    echo "В текущем каталоге существует файл одноимённый файлу $3"
                else
                      cp "$ARG1/$3" "$(pwd)"
                    "$ARG1"/"$ARG2" "$3"
                     set KEY=1
                endfi
            endfi
        endfi
    endfi
    shift            
done
if ( $KEY = 0 ) then
    echo "Не было скопировано ни одного файла"
    exit $E_BAD
else
    echo "Удалось скопировать хотя бы один файл"
    exit $E_GOOD
endfi

 

Revise this Paste

Your Name: Code Language: