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