Bash(Shellスクリプト)のまとめ

言語
スポンサーリンク

言語ごとに書き方が若干異なる部分を中心にまとめています。

特徴

Shellスクリプトは、コマンドラインインターフェイス(CLI)上で動作するプログラミング言語です。その特徴は以下の通りです。

  • OSとの密接な統合性があり、OSの機能を利用したスクリプトを簡単に書くことができる
  • シンプルな構文であり、学習コストが低い
  • バッチ処理や自動化スクリプトを簡単に書くことができる
  • シェルによって提供される環境変数や組み込みコマンドを利用することで、システム管理タスクを自動化することができる

Shellスクリプトは、OSとの密接な統合性があり、OSの機能を利用したスクリプトを簡単に書くことができます。シンプルな構文であり、学習コストが低いです。
また、バッチ処理や自動化スクリプトを簡単に書くことができます。シェルによって提供される環境変数や組み込みコマンドを利用することで、システム管理タスクを自動化することができます。

お試し実行環境

ブラウザでプログラミング・実行ができる「オンライン実行環境」| paiza.IO
paiza.IOはオンラインですぐにプログラミングが始められる、オンライン実行環境です。Java,Ruby,Python,PHP,Perlなど主要32言語に対応。プログラミング学習にも。

比較演算子

演算子 説明
-eq 等しい
-ne 等しくない
-gt より大きい
-ge 以上
-lt より小さい
-le 以下
if [ 1 -eq 1 ]; then
    echo “Match”
else
    echo ”Mismatch”
fi
if [ 1 -ne 1 ]; then
    echo “Mismatch”
else
    echo ”Match”
fi
演算子 意味
文字列のみ 1文字以上
-n 1文字以上
! 空文字
-z 空文字
= 等しい
!= 等しくない
moji="hoge"

if [ "${moji}" ]; then
    echo "True" 
else 
    echo "False" 
fi
moji=""

if [ ! "${moji}" ]; then
    echo "True" 
else 
    echo "False" 
fi
moji1="hoge"
moji2="fuga"

if [ "${moji1}" != "${moji2}" ]; then
    echo "True" 
else 
    echo "False" 
fi

論理演算子

演算子 説明
-a And
-o Or
! Not
if [ 1 -eq 1 -a 2 -ne 3 ]; then
    echo "True"
else
    echo "False"
fi
if [ 1 -eq 1 -o 2 -eq 3 ]; then
    echo "True"
else
    echo "False"
fi
if [ ! 1 -ne 1 ]; then
    echo "True"
else
    echo "False"
fi

繰り返し

for ((i=1; i<=10; i++)) ; do
    echo ${i}
done
for i in {1..10} ; do
    echo ${i}
done
for i in `seq 1 10`; do
    echo ${i}
done

配列

items=(
    "hoge"
    "fuga"
    "piyo"
)

for item in "${items[@]}" ; do
    echo "${item}"
done
items[0]="hoge"
items[1]="fuga"
items[2]="piyo"

for item in "${items[@]}" ; do
    echo "${item}"
done

ファイル操作

演算子 意味
-d ディレクトリならば
-f ファイルならば
-e ファイルが存在していれば
-L シンボリックならば
-r 読み取り可能ならば
-w 書き込み可能ならば
-x 実行可能ならば
-s ファイルが存在し、空でなければ
-S ファイルがソケットならば
A -nt B AがBより新しければ
A -ot B AがBより古ければ
if [ -f /workspace/exec_stderr.txt ]; then
    echo "True"
else
    echo "False"
fi
if [ -s /workspace/exec_stderr.txt ]; then
    echo "True"
else
    echo "False"
fi
ls -l /usr/bin/catman
ls -l /usr/bin/cat

if [ /usr/bin/catman -nt /usr/bin/cat ]; then
    echo "True"
else
    echo "False"
fi
for text_file_name in *.txt ;do
    echo ${text_file_name}
done
files=(`ls -1 /var`)
for file_name in "${files[@]}"; do
    echo ${file_name}
done
タイトルとURLをコピーしました