3. ����������� �����������

������� ������� - ��� ������������������ ����, ����������� ���������. ������ ����� �������� ������ �������, ������� ����� �����������, � ��������� ����� �������� �� ��� ���������. ��� ������� ���������� �� ��� �������� ����� 0 (�.�. ��� ������� �������� ��������� $0). ��������, ������������ ������� �������� - ��� �� ������ ����������, ���� ��� ����������� ���������, ��� (������������) 200+������, ���� ��� ����������� ��������.

������ - ��� ������������������ ������ ��� ���������� ����������, ����������� ��������� ;, &, && ��� || � ���� ����� ��������������� �������� ; ��� &. �� ������� ��������� �������� ; � & ����� ������ ����������, �������, ��� � && � ||. ���������� ��������� ����� ����� ����� �����. ������ ; ��������, ��� ��������� ����� ����������� ���������������, � & - �����������. �������� && (||) ��������, ��� ������, ��������� �� ��� ����� ����������� ���� � ��� ������, ���� ��� ���������� ����������� ��������� ������� (���������).

������� - ��� ���� ������� �������, ���� ���� �� ����������� �����������. ����� ���������� ������� �������� ��� ���������� �� ��������� ������� �������.

3.1. ���� ���

        for <����������> [ in <�����> ]
        do
        <������>
        done

���� ����� in <�����> �������, �� ��� �������� in "$@" ( �� ���� in $1 $2 ... $n). ������. ������� �� ����� ��� ���������� ����� ������� ����������:

        for f in *.for
        do
        cat $f
        done

3.2. �������� ������

        case $<����������> in
                <������> | <������>... ) <������> ;;
                . . .
        esac

�������� ������ ��������� <������>, ��������������� ������� <�������>, �������� ������������� <����������>. ����� ������� �� ��, ��� � ������������ ��� ��������� ���� ������. ����� | ������... ����� �������������.

������. ���������� ����� � ��������������� ��� ��������� �����.

#       ���������������� ����
flag=
#       ��������� ��� ������� ���������
for a
do
        case $a in
                # ��(r)������� �����, �������� �� ���������
                -[ocSO]) flag=$flag' ' $a ;;
                     -*) echo 'unknown flag $a' ;;
                # ������������� ������ �������� ���� � �������� �����
                    *.c) cc $flag $a; flag= ;;
                    *.s) as $flag $a; flag= ;;
                    *.f) f77 $flag $a; flag= ;;
                # �������� ��������
                      *) echo 'unexpected argument $a' ;;
        esac
done

3.3. �������� ��������.

        if <������1>
        then
        <������2>
      [ elif <������3>
        then
        <������4> ]
        . . .
      [ else
        <������5> ]
        fi

����������� <������1> �, ���� ��� ��� ���������� 0, �� ����������� <������2>, ����� - <������3> �, ���� � ��� ��� ���������� 0, �� ����������� <������4>. ���� �� ��� �� ���, �� ����������� <������5>. ����� elif � else ����� �������������.

3.4. ���� ����

        while <������1>
        do
        <������2>
        done

�� ��� ���, ���� ��� ���������� ��������� ������� <������1> ���� 0, ����������� ������� <������2>. ��� ������ ���������� ����� while �� until ������� ������ �� ����� �������� �� ���������������.

� �������� ����� �� ������ <������1> ����� ���� ������� true (false). �� ���� ������� �� ����������� ������� ��������, � ��� ���������� ��������������� 0 (-1). ��� ������� ����������� ��� ����������� ����������� ������. ����� �� ������ ����� ����� ����������� ���� �� ������� break (��. ����������� �������).

3.5. �������

        <���> () {
                  <������>;
                 }

������������ ������� � ������ <���>. ���� ������� - <������>, ����������� ����� { � }.

3.6. ����������������� �����

��������� ����� �������� ������������������:

   if      then    else    elif    fi
   case    in      esac    { }
   for     while   until   do      done

3.7. ����������� �������

��� �������, ��� ���������� ������ ������� shell ��������� ��������� �������. ����������� ������� ���������� ���, ��� ��� �������� � shell � ����������� � ������ �������� ��������.

: ������ �������. ���������� ������� ��� ����������.
. file Shell ������ � ��������� ������� �� ����� file, ����� �����������; ��� ������ file ������������ ������ ������ $PATH.
break [n] ����� �� ����������� for ��� while �����; ���� ������� n, �� ����� �� n ���������� ������.
continue [n] ������� � ��������� �������� ����������� for ��� while �����; ���� ������� n, �� ������� � ��������� �������� n-��� �����.
cd [ <��������> ] ������� ������� ���������� �� ���������� <��������>. �� ��������� ������������ �������� HOME.
echo [ <���> ... ] ������� ���� ��������� � ����������� �����, �������� �� ���������.
eval [ <���> ... ] ��������� ��������, ��� ���� �� ��� ��������� �� ������������ ����� � ��������������� ��� �������, ������� ��� �� � �����������.
exec [ <���> ... ] ��������� ��������������� ��� ������� shell'� � ��� �� �����������, �� ��� ���� �� ��������� ������ ��������. � �������� ���������� ����� ���� ������� ����������� �����-������ �, ���� ��� ������� ������ ����������, �� ����� �������� ���� ����������� �����-������ ������� ���������.
exit [ n ] ���������� ���������� shell'� � ����� ���������� n. ���� n �������, �� ����� ���������� ����� ��� ���������� ��������� ����������� ������� (����� ����� ����� �������� � ���������� ����������).
export [ <����������> ... ] ������ ���������� ���������� ��� ��������������� �������� � ��������� (��. ���������) ����������� ������. ���� ��������� �� �������, �� ��������� ������ ���� �������������� ����������. ����� ������� �� ����� ����������������.
hash [ -r ] [ <�������> ... ] ��� ������ �� ��������� ������ ������������ � ������������ ���� ������. ����� -r ������� ��� ����������� ������. ���� �� ������ �� ���� ��������, �� ��������� ���������� � ����������� ��������: hits - ���������� ��������� shell'� � ������ �������; cost - ����� ������ ��� ����������� ������� � ������ ������; command - ������ ��� �������. � ��������� ��������� ���������� �������������� ����������� ������, ��� ���������� ������� * � ���� hits.
pwd ������� ��� ������� ����������.
read [ <����������> ... ] �������� �� ������������ ����� ���� ������; ������ �� ����� ������������� ������ ����������, ������ - ������ � �.�., ������ ��� ���������� ����� ������������� ��������� ����������.
readonly [ <����������> ... ] ����������� ��������� �������� ��������� ����������. ���� �������� �� ������ , �� ��������� ���������� ��� ���� ���������� ���� readonly.
return [ n ] ����� �� ������� � ����� ���������� n. ���� n �������, �� ����� ���������� ����� ��� ���������� ��������� ����������� �������.
set [ --aefkntuvx [ <���> ... ] ] ������� ������������� ��������� ������:
-a �������� ����������, ������� ���� �������� ��� �������, ��� ���������� ��������� (��. ���������)
-e ���� ��� ���������� ������� ���������, �� ���������� ��������� ���������� shell'�
-f ��������� ��������� ���� ������
-k ��� ���������� � ������ ���������� � ��������� �������, � �� ������ ��, ��� ������������ ����� ������� (��. ���������)
-n ������ �������, �� �� ��������� ��
-t ���������� shell'� ����� ����� � ���������� ����� �������
-u ��� ����������� ������������� ��������������� ���������� ��� ������
-v ������� �������� ������ ����� ����� �� �����
-x ������� ������� � �� ��������� ����� �� �����������
-- �� �������� �����, ������� ��� ������������ ����������� ���������� ����� ��������.
  ��� �������� + ������ - ������ �� ������ ������������� ��������������� �����. ����� ������� ������ ���� �������� ���������� $-. <���> - ��� ��������, ������� ����� ��������� ����������� ���������� $1, $2 � �.�. ���� ��� ��������� �������, ��������� �������� ���� ����������.
shift [ n ] ����������� ����������, ������� � $(n+1), ����������������� � $1 � �.�. �� ��������� n=1.
test ��������� �������� ��������� (��. �������������� ��������. Test )
trap [ <���> ] [ n ] ... ������� <���> ����� ���������, ����� shell ������� ������ n (��. �������). (���� ��������, ��� <���> ����������� ��� ��������� ���������� � ��� ��������� �������). ������� ����������� �� ������� ������� ��������. ����� ������� ���������� ������, ������������ ������ ���������, �� ��������������. ������� ���������� �� ������� 11 (segmentation violation) �������� � ������. ���� <���> ������, �� ��� ���������� ��������������� � �� ��������� ��������. ���� <���> ���� ������ ������, �� ���� ������ ������������ shell'�� � ����������� �� �����������. ���� n=0, �� <���> ����������� ��� ������ �� shell'�. Trap ��� ���������� ������� ������ ������, ��������� � ������ ��������.
type [ <���> ... ] ��� ������� ����� ����������, ��� ��� ����� ������������������ ��� ������������� � �������� ����� �������: ��� ���������� ������� shell'�, ��� ��� ����� ��� �� ������ ����� ��� ������.
ulimit [ -f ] [ n ] ������������� ������ ����� � n ������; -f - ������������� ������ �����, ������� ����� ���� ������� ���������-�������� (������ ����� ����� �����). ��� ���������� - ������� ������� ������.
umask [ nnn ] ���������������� ����� �������� ������ ���������� �� nnn. ���� nnn �������, �� ��������� ������� �������� �����. ������: ����� ������� umask 755 ����� ����������� �����, ������� �������� ������ ������, ������ � ���������, � ��� ��������� - ������ ������ � ���������.
unset [ <���> ... ] ��� ������� ����� ������� ��������������� ���������� ��� �������. ���������� PATH, PS1, PS2 � IFS �� ����� ���� �������.
wait [ n ] ���� ���������� ���������� �������� � ������� ��� ��� ����������. ���� n �� �������, �� ��������� ���������� ���� �������� ���������-�������� � ������������ ��� ���������� 0.

����� | ���������� | ������