【初心者向け】シェルスクリプトの書き方入門 徹底解説

 

シェルスクリプトを書いていてこれどうやって書くんだろ?ってことは往々にしてあるかと思います。

そんなシェルスクリプト初心者が参考にできるよう、シェルスクリプトの書き方を徹底的に解説していきたいと思います。

シェルスクリプト初心者がつまづきやすいところも紹介できればと思います!

<スポンサードリンク>

実行方法

まずはシェルスクリプトの実行方法です。3つの実行方法があります。

3つめだけファイルの実行権限を変更しなければいけませんが、どれでも問題ないです。

bash test.sh
sh test.sh
chmod 755 test.sh
./test.sh

 

標準出力

次にシェルスクリプトで、文字列を標準出力に出力させる書き方です。

console.logのようにデバックとして使ったりもします。

・シェルスクリプト

#!/bin/sh

echo "Hello World"
echo 'Hello World'
echo Hello World

・実行結果

Hello World
Hello World
Hello World

 

変数

・シェルスクリプト

#!/bin/sh

str1="test1"
str2='test2'
str3=test3

echo $str1
echo $str2
echo $str3

・実行結果

test1
test2
test3

変数とイコールの間は、スペースを入れてはいけない

・シェルスクリプト

#!/bin/sh

str1 = "test1"

echo $str1

・実行結果

test.sh: line 3: str1: command not found

 

四則計算

・シェルスクリプト

#!/bin/sh

integer1=4
integer2=2

echo $((integer1 + $integer2))
echo $((integer1 - $integer2))
echo $((integer1 * $integer2))
echo $((integer1 / $integer2))

・実行結果

6
2
8
2

※ちなみにこういう書き方はできない

・シェルスクリプト

#!/bin/sh

integer1=4
integer2=2
integer3=integer1+integer2

echo integer1+integer2
echo $integer1+$integer2
echo $integer3

・実行結果

integer1+integer2
4+2
integer1+integer2

 

<スポンサードリンク>


if文の書き方

文字列比較

・シェルスクリプト

#!/bin/sh

str1="A"
str2="a"
str3="A"

if [ $str1 = $str2 ]; then
  echo "1と2は同じだよ!!"
elif [ $str1 = $str3 ]; then
  echo "1と3は同じ!!"
else
  echo "1と同じ文字はないよ!!"
fi

・実行結果

1と3は同じ!!

> < (大なり小なり)で数値比較

・シェルスクリプト

#!/bin/sh

#########################
######  > -gt (greater than or equal)
#########################

integer1=1
integer2=2


if [ $integer1 -gt $integer2 ] ; then
  echo "integer2はinteger1より大きい"
else
  echo "integer2はinteger1以下"
fi

#########################
######  < - le (less than equal)
#########################

integer3=3
integer4=4

if [ $integer3 -lt $integer4 ] ; then
  echo "integer3はinteger4より小さい"
else
  echo "integer3はinteger4以上"
fi

 

・実行結果

integer2はinteger1以下
integer3はinteger4より小さい

ファイルの存在確認

・シェルスクリプト

#!/bin/sh

file_name="test.sh"

if [ -f $file_name ] ; then
  echo "あるよ!"
else
  echo "ないよ!"
fi

・実行結果

あるよ!

AND条件

・シェルスクリプト

#!/bin/sh

str1="a"
str2="a"
str3="b"
str4="b"

if [ $str1 = $str2 -a $str3 = $str4 ] ; then
  echo "同じ"
else
  echo "違う"
fi

・実行結果

同じ

 

OR条件

・シェルスクリプト

#!/bin/sh

str1="a"
str2="a"
str3="b"
str4="c"

if [ $str1 = $str2 -o $str3 = $str4 ] ; then
  echo "どっちかは同じ"
else
  echo "どっちも違う"
fi

・実行結果

どっちかは同じ

 

for文の書き方

・シェルスクリプト

#!/usr/bin/bash

for i in aa bb cc
do
echo $i
done

・実行結果

aa
bb
cc

 

よく使われる実行方法

・シェルスクリプト

#!/usr/bin/bash

for i in `seq 10`
do
echo "test$i"
done

・実行結果

test1
test2
test3
test4
test5
test6
test7
test8
test9
test10

 

シェル実行時に引数を使う

・実行コマンド

bash test.sh a 1

シェルスクリプトでは、下記のように特別な変数が使える。

・シェルスクリプト

#!/bin/sh

echo "$0" # スクリプト名
echo "$1" # 1番目の引数
echo "$2" # 2番目の引数
echo "$#" # 引数の数

・実行結果

test.sh
a
1
2

よくあるキーボード入力(y/n)の書き方

・シェルスクリプト

#!/bin/bash

echo "こちらでよろしいですか? [Y/n]"
read ANSWER

case $ANSWER in
    "" | "Y" | "y" | "yes" | "Yes" | "YES" ) echo "YES!!";;
    * ) echo "NO!!";;
esac

・実行結果

ok? [Y/n]
y
YES!!

ok? [Y/n]
n
NO!!

 

ファイルを1行ずつ読み込む

・inputファイル

% cat test.txt
ruby
java
python
c
c+

・シェルスクリプト

#!/bin/sh

while read line
do
  echo $line
done < test.txt

・実行結果

ruby
java
python
c
c+

 

関連

シェルスクリプトのif文の書き方を徹底解説

Linuxで特定の文字が含まれる行数を取得したい

シェルスクリプトのfor分の書き方を徹底解説

【初心者向け】シェルスクリプトの書き方入門 徹底解説

シェルスクリプトの関数の書き方を徹底解説シェルスクリプトで変数と文字列を結合する

シェルスクリプトの関数の書き方を徹底解説

スポンサードリンク



コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

CAPTCHA