2016-07-20 2 views
-2
ckFile() { 
    if [ ! -e "$1" ]; then 
    err "$2 File '$1' not found"; 
    fi 
} 

    ckFileSz() { 
    ckFile $1 $2; 
    SZ=`ls -l $1 | awk '{print $5}'`; 
    if [ "$SZ" == "0" ]; then 
    err "$2 file '$1' is zero length"; 
    fi 
} 
+0

Это 2 определения функций оболочки. Что конкретно вас путает? –

+2

просто глупый вопрос, я не уверен, что! символ означает в этом "! -e" $ 1 "" и почему ckFile $ 1 $ 2 имеет два аргумента –

+0

'ckFileSz()' будет лучше написано 'ckFileSz() {if test -s" $ 1 "; затем err "$ 2 файл '$ 1' имеет размер 0"; Fi; } 'Нет необходимости переводить ls на awk просто, чтобы проверить, имеет ли файл нулевой размер. –

ответ

2

$1 - первый аргумент, переданный [ function ]. Например, если вы вызываете функции, как:

ckFile /path/to/somefile 

/path/to/somefile станет первым аргументом (т.е. $1).

[] является альтернативной формой bash [ test ]. Короче с

if [ ! -e "$1" ] 

Вы проверяете, если файл $1 нет (! отрицает условие) существует (-e вариант) в системе.

и почему ckFile $1 $2 имеет два аргумента

мало информации известно о втором аргументе здесь. Вы можете обновить вопрос, как вызывается функция.

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