2014-08-29 2 views
-1

Мне нужно написать сценарий оболочки, который помещает файл в каталог пользователя (пользователь помещается в параметр), этот файл содержит информацию о файлах, переданных в параметрах ,Сценарий оболочки, который создает файл с wc

Если присутствует параметр -c, он создает файл с именем count, который содержит числа строк, слов и символов файлов, переданных в параметрах.

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

Это то, что у меня до сих пор, но это еще не работает

#!/bin/bash 

while test $# -gt 0; do 
    case "$1" in 
       -c) 
        cd $HOME && wc * > count 
        ;; 
       -d) 
        cd $HOME && rm -f count 
        ;; 
      *) 
        break 
        ;; 
    esac 

сделано

+0

а также в чем проблема или вопрос? Удачи! – shellter

+1

Вы сказали, что имя пользователя и файлы передаются как параметры. Где вы используете эти параметры? – Barmar

+0

Извините, не было ясно о моем вопросе, какие-либо советы, чтобы сделать его лучше или какие-либо очевидные ошибки, которые вы можете увидеть здесь, над которыми я должен работать? Это для задания, и мой Ubuntu, с которым я работал на VMWare, с самого начала пытался войти в систему как root (но это уже другая история). Поэтому я не могу проверить это на данный момент. – user3742475

ответ

1

$# никогда не уменьшается, так как вы никогда не используете shift, чтобы уменьшить количество позиционных параметров. Ваш цикл просто обрабатывает первый аргумент.

#!/bin/bash 

while test $# -gt 0; do 
    case "$1" in 
       -c) 
        cd $HOME && wc * > count 
        ;; 
       -d) 
        cd $HOME && rm -f count 
        ;; 
      *) 
        break 
        ;; 
    esac 

    shift # Use this to modify $# 

done 
Смежные вопросы