shellスクリプトコマンド(2)

4628 ワード

二十、printf
value="hello"
printf "value=%s
" "${value}"

使い方:printfは「二重引用符」を出力する内容で、
%s:プレースホルダは厳密には出力文字列タイプです.
%f:もプレースホルダです.小数型値でなければなりません.
%d:プレースホルダでもあり、整数タイプ値である必要があります.
%c:プレースホルダでもあり、1文字のみ印刷されます.文字タイプ値のプレースホルダでなければなりません.
:エスケープ文字
同じ値が複数の変数を出力する場合
value="hello"
value1=9
printf "value=%s
value1=%s
" "${value}" "${value1}"

%.3 f:小数点以下3桁保持
%6.3 f:データ全体の幅が6文字であることを示します(小数点でも計算します)不足している場合は、左にスペースで補完します.
%m.nf
  • m
  • m>n+1+整数が実際に占める個数であれば、mは
  • の効果を有する.
  • このフォーマットは右揃えで
  • です.
    %-m.nf:左揃え
    %md、%ms、%mc
    二十一、read
    printf "      :"
    read value
    printf "   =%s
    " "${value}"

    使用法:キーボードから値を読み込みread後の変数に割り当てる
    注意:readはできるだけ同時に複数の値を入力しないでください.例えば、
    read value value1
    

    二十二、演算
  • 演算子:+-*/%
  • 注意点
  • exprは整数型を計算するデータ
  • である.
  • 演算子の左右にスペースが必要です
  • ``および$()は、いずれも結果セット
  • を取得します.
  • 注意乗算*はエスケープを通過しなければなりません.そうしないと
  • エラーが発生します.
  • ``および$()は、整数演算の結果セットだけでなく、shellコマンドの結果セット、例えば、
  • を取得することもできる.
    result=`ls`
    
  • ケース:
  • num1=1
    num2=2
    num3=`expr $num1 \* $num2`
    echo "${num3}"
    

    整数演算は、$(()など)で行うことができる.
    num1=1
    num2=3
    num3=$((num1+num2))
    echo "${num3}"
    

    二十三、letキーワード
    num1=1
    num2=3
    let num3=num1 + num2
    echo "${num3}"
    
  • で使用する演算子
     + - * / % ++ --   += -= *= /=
    
  • 接頭辞++は、まず自己+1であり、
  • の値を付与する.
  • 接頭辞--まず自己-1であり、
  • を割り当てる.
  • 接尾辞++は先に付与され、さらに自身+1
  • 接尾辞--まず付与され、それから自身-1

  • 注意点:++はletキーワードでのみ使用でき、結果セットでは使用できません.
    +=
    num1 += num2 #num1=num1+num2
    

    二十四、演算子
    <<= >= != == -gt -ge -lt -le -eq -ne!
    num1=1
    num2=2
    num3=`expr $num1 \> $num2`
    echo "${num3}"
    

    リレーショナル演算では、演算の結果は論理値です.リレーショナル式が成立する場合、論理値は1、そうでない場合は論理値は0
    ,=いずれもでエスケープしなければならない
    !=を使ってエスケープしてもいいし、エスケープしなくてもいいです.
    =,=,=,=,=(コンパイラによって決定される)
    文字列演算子
  • =:文字列が等しいかどうかを判断する
  • !=:文字列が等しくないかどうかを判断する
  • -z:zeroは、文字列が空(文字なし)であるか、存在しないか(定義されていない変数)であるか、またはいずれもスペース
  • であるかを判断する.
  • ケース:
  • string1="hello"
    striing2="hello"
    if [ $string1 = $string2 ]
    then
        echo "equal"
    else
        echo "not equal"
    fi
    

    ファイル演算子
  • -d:ディレクトリファイル
  • であるか否かを判定する
  • -f:通常文書であるか否かを判断する
  • を示す.
  • -r:可読ファイルであるか否かを判断する
  • を示す.
  • -w:書き込み可能ファイルであるか否かを判断する
  • を示す.
  • -x:実行可能ファイルであるか否かを判断する
  • を示す.
  • -e:exist、
  • ファイルが存在するか否かを判断する
  • ケース
  • file="11"
    if [ -d 11 ]
    then
        echo "     "
    else
        echo "      "
    fi
    

    二十五、条件文
    if[]
    #          
    #      -gt   
    
    then
    
          
        
    fi
    
    if[]
    #          
    #      -gt   
    
    then
    
          
    elif []
    then
          2
    fi
    
    if[]
    #          
    #      -gt   
    
    then
    
          
    elif []
    then
          2
    else
          3
    fi
    
  • -gt :>
  • -ge :>=
  • -lt :<
  • -le :<=
  • -eq :==
  • -ne :!=

  • アルファベット意味g:greater
    than
    equal
    if文の要約:
  • elseはなくてもいいです.もしあったら一番後ろに置かなければなりません.elseの下にthen
  • はありません.
  • elifはなくてもよく、if elseの真ん中の任意の位置に置かなければならない
  • if文は1つのブランチ
  • しか実行できません.
  • ifの終了フラグはfi
  • です
    二十六、case文
    case    in
     1)
           
    ;;
     2)
           
    ;;
    esac
    

    注意点:
  • 終了フラグはesac
  • でなければなりません.
  • 値1)と値2)は同じ
  • でもよい.
  • 値1)と値2)の条件が満たされている場合*)
  • に来る.
  • *)書かなくてもいいですが、書くなら最後の
  • に書いてください.
  • 各ブランチが終了した後に1つあります.

  • 二十七、配列
  • 配列初期化:
  • 1変数1変数初期化
  • arr[0]=8
    arr[1]=9
    

    注意:変数を初期化し、値を間隔を置いて割り当てることも、0から開始しないこともできます.たとえば、次のようにします.
    arr[1]=7
    arr[5]=9
    
  • 全体付与
  • arr=(1 2 3 4 hello)
  • 配列要素アクセス
  • ${配列名[下付き]}
  • 配列内のすべての要素を巡る
  • ${配列名[*]}
  • ${配列名[@]}

  • 二十八、whileサイクル
    while []
    do
           
    done
    
    sum=0
    i=0
    while [ i -le 100 ]
    do
        let sum=sum+i
        let i++
    done
    echo "sum=${sum}"
    

    二十九、パラメータ
    $0:は、実行するファイルを表します./.sh
    $1:実行の最初のパラメータを表します.
    $2:実行された2番目のパラメータを表します.
    ·····
    $n:実行されたn番目のパラメータを表します.
    $#:実行されるパラメータの合計数を表します.コマンド自体は含まれません.
  • パラメータが1
  • であるか否かを判断する.
  • ファイルが存在するか否かを判断する
  • .
  • が存在する場合、ファイルが通常のファイルであるか否かを判断する
  • .
  • 権限変更
  • 運転
  • このコマンドをグローバルに有効にする