この広告は、90日以上更新していないブログに表示しています。
Bashの文法一覧です。他の言語をある程度知っている人はこれを読めばBashの基礎をマスターしてBashを書くことができるようになっています。簡易リファレンスとしても利用できると思いますので、これは足りないと思うものがあれば教えてください。
コメントです。
# コメント
変数の宣言です。
# 文字列変数declare str# 数値変数declare -i num# 配列変数declare -a array
変数に数値を代入できます。変数には整数のみ代入できます。
declare -i numnum=2num=100000000
四則演算です。
num=1+1num=1-1num=1*2num=1/2
余りの求め方です。
num=1%2
インクリメントとデクリメントです。
# インクリメントlet ++num# デクリメントlet --num
文字列はそのまま書くか、シングルクォートかダブルクォートで囲みます。文字列にスペース文字やタブ文字などの単語区切り文字が含まれる場合は、シングルクォートかダブルクォートで囲む必要があります。
文字列をそのまま書いた場合とダブルクォートで囲んだ場合は、変数展開が行われます。文字列をシングルクォートで囲んだ場合は変数展開は行われません。
declare str1=abc # abcdeclare str2="de f" # de fdeclare str3='g hi' # g hideclare str4=$str1 # abcdeclare str5="$str1" # abcDECLARE str6='$str1' # $str1
各種文字列操作です。
# 文字列連結declare str_a='aaa'declare str_b='bbb'declare join1=$str_a$str_bdeclare -a array=(aaa bbb ccc)OLDIFS=$IFSIFS='|'declare join2="${array[*]}"IFS=$OLDIFS# 文字列分割OLDIFS=IFSIFS=','declare str='aaa,bbb,ccc'declare -a record=($str)IFS=OLDIFS# 長さdeclare str=abcdefdeclare -i length=${#str}# 切り出しdeclare str=abcddeclare substr=${str:0:2}# 検索declare str1='abcd'declare str2='cd'OLDIFS=IFSIFS="$str2"declare temp=($str1)declare -i str1_len=${#str1}declare -i temp_len=${#temp}IFS=OLDIFSif [ $str1_len -eq $temp_len ]then declare -i result=-1 # 見つからなかった場合は-1else declare -i result=$temp_len # 見つかった場合はその位置fi
配列です。
# 配列の宣言declare -a array# 配列への代入array=(1 2 3)
配列の要素の参照と代入です。
# 要素の参照${array[0]}${array[1]}# 要素の代入array[0]=1array[0]=2
配列の要素の個数です。
declare -i array_num=${#array[@]}
配列の操作です。
declare -a array=(1 2 3)# 先頭を取り出すfirst="${array[0]}" # firstは1array=("${array[@]:1}") # arrayは(2 3)# 先頭に追加array=(5 "${array[@]}") # arrayは(5 2 3)# 末尾を取り出すdeclare -i num=${#array[@]}-1last="${array[$num]}" # lastは3 array=("${array[@]:0:$num}") # arrayは(5 2)# 末尾に追加array=("${array[@]}" 9) # arrayは(5 2 9)
if文です。
if [ 条件 ]; thenfi
if 〜 else 文です。
if [ 条件 ]; thenelsefi
if 〜 elif 文です。他の言語のようにelse ifではなくelifであることに注意しましょう。
if [ 条件 ]; thenelif [ 条件 ]; thenfi
while文です。
declare -i i=0while [ $i -lt 5 ]; do # 処理 let ++idone
for文です。
declare -i ifor (( i=0; $i < 5 ; ++i )); dodone
for each文です。
for field in "${fields[@]}"; dodone
関数です。
Bashでは他の言語のように明示的に引数を指定することはありません。$1、$2、$3などのパラメータに引数が格納されるので自力で取り出します。
Bashの関数では戻り値を返すことはできません。代わりに、終了ステータスを返すことができます。終了ステータスを返すにはreturnを使います。終了ステータスには0〜255の整数を指定できます。
関数を作るには次のようにします。
function show_sum { declare -i num1=$1 declare -i num2=$2 declare -i total=num1+num2 echo $total return 0}
ファイル入出力です。
以下がファイル入力の雛形になります。
declare linewhile read linedodone< $file
以下がファイル出力の雛形になります。
cat /dev/null > $fileecho "aaa" >> $fileecho "bbb" >> $fileecho "ccc" >> $file
Bashでよく出てくる知っておいたほうがよい文法の一覧です。
until文はwhile文の否定を表します。
until [ 条件 ]; dodone
直前のコマンドや関数の終了ステータスを取得するには以下のようにします。
status=$?
IFSは単語分割用の区切り文字を格納する変数です。Bashの組み込みコマンドが単語分割を行うときにIFSの値を使用します。デフォルトでは空白文字、タブ文字、改行文字が格納されています。
区切り文字を指定して単語分割を行いたい場合、その区切り文字を一時的にIFSに代入します。単語分割が完了したら、後続の処理に影響がないようにIFSの値を元に戻します。
# カンマで分割OLDIFS=IFSIFS=','declare str='aaa,bbb,ccc'declare -a record=($str)
この記事は最近の基礎文法最速マスターの流れに便乗して作成したものです。
以下、各種基礎文法最速マスターへのリンクです。
引用をストックしました
引用するにはまずログインしてください
引用をストックできませんでした。再度お試しください
限定公開記事のため引用できません。