2012-01-21 2 views
0

Этот сценарий был написан моим наставником, но я этого не понимаю. Может кто-нибудь, пожалуйста, объясните мне это.Понимание этого скрипта unix

#!/bin/bash 
find $1 -size +${2}c -size -${3}c 

Этот сценарий предполагают, чтобы принять три аргумента командной строки: имя каталога, минимальный размер файла в байтах и ​​максимальный размер файла в байтах. Так что при его запуске, она будет выглядеть следующим образом:

./script.sh /home/Desktop/file 5000 10000 

И тогда файлы размером от 5000 до 10000 будет отображается на экране.

Доза любой знает другой способ сделать то же самое?

ответ

0

Этот скрипт работает, как говорит ваш учитель.

Ошибка "find: Invalid argument +c to -size. is becausse, вы не сообщаете о втором аргументе сценария. Тогда $ {2} не имеет никакого значения, и скрипт пытается выполнить:

find your_path -size +$c -size -$c 

Вы можете изменить свой сценарий, чтобы check for number or arguments:

#!/bin/bash 
EXPECTED_ARGS=3 
E_BADARGS=65 
HLP_ARG="path min_size max_size" 
if [ $# -ne $EXPECTED_ARGS ] 
then 
    echo "Usage: `basename $0` $HLP_ARG" 
    exit $E_BADARGS 
fi  

find $1 -size +${2}c -size -${3}c 
+0

Почему 'E_BADARGS = 65', а не' E_USAGE = 64'? –

+0

Вы можете выбрать свой собственный код [exit status] (http://www.cyberciti.biz/faq/bourne-shell-exit-status-examples/). – danihp

+0

Вместо того, чтобы требовать 3 аргумента, часто лучше просто установить разумные значения по умолчанию: find $ 1 $ {2 + -size + $ {2} c} $ {3 + -size - $ {3} c} –

2
#!/bin/bash 
find $1 -size +${2}c -size -${3}c 
    |___|  |_____|  |_____| 
     |   |    | 
This is the This is  This is the 
first argument the second third argument 
passed while argument 
running the 
    script 

find утилита синтаксис для поиска specified path файлов который может быть идентифицирован в зависимости от выбранного options.

-size n[ckMGTP] 
True if the file's size, rounded up, in 512-byte blocks is n. 
If n is followed by a c, then the primary is true if the 
file's size is n bytes (characters). 

Использование + перед second argument означает, что мы ищем файлы greater затем указанных число. Аналогично - означает, что файлы, которые будут отображаться, должны быть меньше указанного размера.

Передача трех аргументов в ваш скрипт означает, что мы даем $1 в качестве пути к поиску, который в вашем случае равен /home/Desktop/file. Второй аргумент определяет условие, что файлы должны быть больше указанного аргумента, который равен 5000. Последний аргумент состоит в том, чтобы указать, что файлы должны быть меньше указанного размера, который равен 10000.

Надеюсь, это поможет!

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