言語ごとに書き方が若干異なる部分を中心にまとめています。
特徴
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