@maniac_by
Atlassian Administrator

Не получается заставить работать скрипт с IF, в чем может быть причина?

Всем привет. Получил задание, не сложное, но никогда не имел дел с программированием даже близко. Потому нужна помощь.

Нужно написать скрипт, который будет выдавать топ-10 файлов по величине из выбранной директории.
#!/bin/bash
dir=$1
dir2=$2

if [[ "$dir" = "$1" ]]; then find $2 -type f -ls 2> /dev/null | sort -rnk7 | head -10 | awk '{printf "%10d MB\t%s\n",($7/1024)/1024,$NF}'
fi

if [[ "$dir" = '-h' ]]; then echo "help me"
fi

if [[ "$dir" = '' ]]; then echo "No args"
fi


Проблема в том, что когда я пишу, например, /opt , то скрипт ничего не выводит. Я понимаю, что дело в объявлении переменной. Но не могу сам дойти, что конкретно не так. Пожалуйста, помогите с простейшим примером. Спасибо
  • Вопрос задан
  • 163 просмотра
Решения вопроса 1
@Hanharr
#!/usr/bin/env bash

if [ "$#" -gt "1" ]
then
    echo "To many arguments"
    exit 1
fi

if [ -z "$1" ]
then
    echo "Введите директорию!"
    exit 1
fi

if [[ -d  "$1" ]]
then
    find "$1" -type f -ls 2> /dev/null | sort -rnk7 | head -10 | awk '{printf "%10d MB\t%s\n",($7/1024)/1024,$NF}'
elif [[ "$1" == "-h" || "$1" == "--help" ]]
then
    echo "Help me!"
else
    echo "$1 не директория!"
fi
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
saboteur_kiev
@saboteur_kiev Куратор тега Linux
build engineer
#!/bin/bash

if [[ -z "$1" -o "$1" == "-h" -o "$1" == "--help" ]]; then
  echo "provide directory name";
  exit 1
fi

if [[ -d "$1" ]]; then
  find "$dir" -type f -ls 2>/dev/null | sort -rnk7 | head -10 | awk '{printf "%10d MB\t%s\n",($7/1024)/1024,$NF}'
else
  echo "it is not a directory"
fi
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы