LinuxForum.Fans
Тема

Нужно помощь в написание shell процедуры)

Автор: deleted_user 7 сообщений 3774 просмотров
#207434

Помогите пожалуйста
Написать shell-процедуру, которая:
• Читает содержимое файла, передаваемого в качестве первого параметра;
• Создает в текущем каталоге цепочку подкаталогов с относительным маршрутным именем, повторяющим полное маршрутное имя текущего каталога;
• Создает в последнем подкаталоге новый файл, имя которого передается в качестве второго параметра;
• Записывает в новый файл строки первого файла в обратном порядке, вставляя после каждого слова фразу "THAT IS ALL" столько раз, сколько задано третьим параметром
Первые деньки октября преподаватель давал по линуксу всякую лёгкую вещь 4 дня назад дал сие задание
Ну собственно никто не знает как сделать,нужно сдать в понедельник иначе до сессии не допустят,
Символическая плата предусмотрена....

#207436

null, ты начинай, помогут если что-то делать начнешь, полностью за тебя никто делать не будет.

#207440

что уже студенты МИФИ такую задачу решить не могут?

#207443

чет не понял на баше надо писать или на шеле ?

#207456
text
#/bin/sh
# Написать shell-процедуру, которая:
# -  Читает содержимое файла, передаваемого в качестве первого параметра;
# -  Создает в текущем каталоге цепочку подкаталогов с относительным маршрутным
#   именем, повторяющим полное маршрутное имя текущего каталога;
# -  Создает в последнем подкаталоге новый файл, имя которого передается в 
#   качестве второго параметра;
# -  Записывает в новый файл строки первого файла в обратном порядке, вставляя
#   после каждого слова фразу "THAT IS ALL" столько раз, сколько задано третьим
#   параметром

usage_exit() { echo "Usage: $0 input_file output_file repeat_count" exit 1 }

IN_FILE="$1" OUT_DIR="./${PWD#/*}" OUT_FILE="$OUT_DIR/$2" APPEND_COUNT="$3" APPEND_PHRASE="THAT IS ALL"

if [ ! -f "$IN_FILE" ]; then usage_exit fi

if [ -z "$OUT_FILE" ]; then usage_exit fi

if [[ "$APPEND_COUNT" != [0-9]* ]]; then usage_exit fi

mkdir -p "./${PWD#/*}"

APPEND_STRING="" for((i=0; i<$APPEND_COUNT; i++)) ; do APPEND_STRING="$APPEND_STRING $APPEND_PHRASE" done

cat $IN_FILE | while read LINE; do echo "$LINE$APPEND_STRING" >>"$OUT_FILE" done

null написал:
Символическая плата предусмотрена....

ожидаю вознаграждение не меньшее бутылки неплохого пива.

#207459

Пришел Fat-Zer, и все испортил. :lol:

#207510
null написал:
Ну собственно никто не знает как сделать,нужно сдать в понедельник иначе до сессии не допустят,

Fat-Zer, подозреваю что сессию таки никто не сдаст :lol:

Войдите или зарегистрируйтесь, чтобы ответить.