#author("2024-11-18T15:20:51+09:00","default:k1rou","k1rou") #author("2024-11-18T15:23:24+09:00","default:k1rou","k1rou") *シェルスクリプト(bash) [#u3889a99] **定義 [#y6fe32f1] -スクリプトファイルの先頭行に書く宣言(シェバング) --#!/bin/bash **変数 [#qa4a56a8] ***配列 [#h67f3206] -配列に値をセット ARRAY=(1 2 3) ARRAY+=(4) -配列の値を取得 --先頭の要素の値を取得 ${ARRAY} --要素の位置を指定して値を取得 ${ARRAY[0]} --要素数を取得 ${#ARRAY[@]} -サンプル ARRAY=(1 2 3) ARRAY+=(4) for ((i=0; i<${#ARRAY[@]}; i++)) do echo ${ARRAY[$i]} done **シェル関数 [#jd0237ef] -関数を定義 <function-name>() { echo $1 } -関数を呼び出し <function-name> <function-name> a b c ※引数あり ***引数 [#c98e0589] -引数の値を取得 $1 -引数の数を取得 $# ***戻り値(終了ステータス) [#a3dfd215] -戻り値の値 --0:真 --0以外の数値:偽 -シェル関数の終了 --真(正常終了) return return 1 return 0 --偽(異常終了) return 1 ※0以外の数値を指定する -(シェル関数の呼び出し元で)戻り値を取得 $? **途中でコマンドを実行する [#ed54632b] -`<command>` ※バッククオートで囲む -$(<command>) **条件分岐 [#c348d737] -if if [ 条件式 ]; then <command> elif [ 条件式 ]; then <command> else <command> fi if test 条件式; then <command> fi -case case <変数> in <value1> ) <command> ;; <value2> ) <command> ;; * ) <command> ;; esac **ループ [#da33d793] -while while [ <条件式> ] do <comand> done --CSVファイルを読み込む CSVFILE="./sample.csv" while IFS=, read col_a col_b col_c; do a_arr+=($col_a) b_arr+=($col_b) c_arr+=($col_c) done < $CSVFILE ※環境変数IFSは内部フィールド区切り文字(Internal Field Separator) -until until [ <条件式> ] do <command> done -for for str in 1 2 3 for str in `seq 0 10` for str in {0..10} do <command> done **演算子 [#if8c532c] ***制御演算子 [#l4c6640e] -And (&&) <command1> && <command2> ※左辺の実行結果が真(0)の場合、右辺を実行する -Or (||) <command1> || <command2> ※左辺の実行結果が偽(0以外)の場合、右辺を実行する ***論理演算子 [#o4b51b8c] -And (-a) -Or (-o) ***数値比較演算子 [#vf87568f] -等しい(-eq) ※= -等しくない(-ne) ※!= -より小さい(-lt) ※< -以下(le) ※<= -より大きい(gt) ※> -以上(ge) ※>= **テキストファイルの読み込み [#r9367666] -read *参照 [#f51c4bc6] -[[bash]] -[[Linuxコマンド]] -[[シェルスクリプト]] -[[シェル]]