トップページ
ひらく | たたむ | ページトップ
↓マウスで反転選択した文字を検索
Cygwin
   
ページ内検索 ページ外検索
検索したい文字を入力して
ENTERを押すと移動します。
\n
[ トップページ ]
[ ____CommandPrompt ] [ ____JScript ] [ ____MySQL ] [ ____Cygwin ] [ ____Java ] [ ____Emacs ] [ ____Make ] [ ____Perl ] [ ____Python ] [ ____OpenGL ] [ ____C# ] [ ____StyleSheet ] [ ____C++ ] [ ____Winsock ] [ ____Thread ] [ ____VisualStudio ] [ ____C ] [ ____Win32API ] [ ____Lua ] [ ____PhotoShop ]
ヘッダ検索
___

■ 制御構文




___

■ if

if 終了コード then cmd # 条件文(処理)の結果 == 0 の処理 elif 終了コード cmd # 条件文(処理)の結果 != 0 の処理 else cmd fi 条件によって処理を分岐したいときは test コマンドを使う。 test は式が真ならば終了コードの 0, 偽ならば 1 を返す。

    v=1
    if test $v = 1 
    then
      echo "true"
    fi


    # ファイルの有無をテスト    
    if test -f ~/.emacs
    then
      echo "true"
    fi

test の省略形として [] を使うこともできる。 ただし [] 内の前後は スペースを空ける必要がある。

    if [ -f ~/.emacs ]
    then
      echo "true"
    fi

変数の値と比較するときは空がきた場合の対策で "" をつけておく if [ = "aaa" ] と解釈されて構文エラーになる。
    if [ "$1" == "a" ]
    then
      echo "true"
    fi
POINT # if(0) if [ ]; then # if(1) if [ nandemo ]; then WARNING BAD if 0; then ## ERR, invalid cmd OK if test.sh; then ## ## test.sh exit 0
    条件文はひとつの式なので [ ; then ] と記述

    すべてに TOKEN にスペースを空ける
    空の 式 はできない.
   BAD
     if 条件文; then fi
   BAD
     if [ "$1"="str" ];
   OK
     if [ "$1" = "str" ];  
___

■ OR.AND


  # AND
  if [ -f a.txt -a -f b.txt ]

  # OR
  if [ -f a.txt -o -f b.txt ]

  i=10
  j=1
  if [ $i == 10 -a $j == 7 ]; then
      echo "true"
  else
      echo "false"
  fi

___

■ for

SYNTAX for $v in list do ... done スペース区切りの文字列 list 内の要素を変数 v に代入しながら繰り返す
    list="a b c"

    for $v in list
    do
      echo $v
    done
シェルのファイル展開と併用する。

    # すべての .txt を処理する
    for v in *.txt
    do
        echo $v
    done

引数をイテレートする
    for v in $*; do
        echo $v
    done
コマンドの結果をイテレートする

    for v in `find -iname "*.txt"`; do
        echo $v
    done
    
    # grep で検索された結果をイテレートする。
    for v in `grep "TODO" ~/.emacs`; do
        echo $v
    done
___

■ while

SYNTAX while 条件文 do ... done
    # [ : ] 区切りのパスを出力

    list=$PATH

    while test -n "$list"
    do
      echo ${list%%:*}
      list=${list#*:}


      if [ "$list" == "${list#*:}" ]; then
          break;
      fi 

    done

    # file の各行をなめる
    while read i
    do
      echo $i
    done <  /dust/foo.txt

    # STDIN から 入力
    while read i
    do
      echo $i
    done
___

■ case

SYNTAX case 文字列 in 条件1) 処理1 ;; 条件2) 処理2 ;; 条件3) 処理3 ;; esac DESC 文字列一致した条件の処理をする。

    v=a
    case $v in
        a)
        echo "a"    ;;
        b)
        echo "b"    ;;
        *)
        echo "default"
    esac
条件の文字列には シェルのワイルドカードが使える。 "*" は任意の文字列なのでデフォルトとして機能する。
    v=a
    case $v in
        *.txt)
        echo "txt"    ;;
        *.exe)
        echo "exe"    ;;
        *)
        echo "default"
    esac
    # ユーザーごとに処理をかえる
    case $USER in
        root)
        echo "root user"    ;;
        *)
        echo "default"
    esac
    


    while getopts a:bc var
    do

    case $var in
      a)
        echo a
        ;;     # break
      b)
        echo b
        ;;     
      *)      # Default
        echo etc
    esac


















NINJAIDX 3