Categories: shell

シェル文法(sh)まとめ

bashcshもみんな集まれ

shebang(シバン)

Linuxカーネルがシェルを実行するとき、Linuxカーネルはシェルファイルの先頭行を確認します。
先頭行に#!がある場合、Linuxカーネルは後ろに続く文字列を実行します。
例えば、#!/bin/bashと書かれている場合は、/bin/bashを実行します。

bash

シェルファイルをbashで実行したい場合、シェルの先頭行に#!/bin/bashと記述します。

bash

#!/bin/bash

echo "Hello World!"

csh

シェルファイルをcshで実行したい場合、シェルの先頭行に#!/bin/cshと記述します。

csh

#!/bin/csh

echo "Hello World!"

シェルファイルの実行方法

shebang(シバン)が書かれている場合

シェルファイルにshebang(シバン)が書かれている場合は、以下の方法で実行することができます。
.はカレントディレクトリを意味します。つまり相対パス指定です。

bash

./sample.sh

以下のように絶対パス指定で実行することもできます。

bash

/home/user1/work/sample.sh

shebang(シバン)が書かれていない場合

シェルファイルにshebang(シバン)が書かれていない場合でもbash指定で実行したい場合は以下の方法で実行できます。

bash

#方法1
bash sample.sh

#方法2(相対パス)
bash ./sample.sh

#方法3(絶対パス)
bash /home/user1/work/sample.sh

変数定義

bash

bashでは以下のように変数定義します。

bash

hensu="apple"

csh

cshでは以下のように変数定義します。
cshで変数定義するにはsetコマンドが必要です。

csh

set hensu="apple"

if文

bash

bash

#!/bin/bash

hensu="apple"

if [ ${hensu} = "apple" ]; then
    echo "true"
else
    echo "false"
fi

実行結果

実行結果

$ ./if.sh
true

for文

bashfor文で、cshforeach文です。

bash

bash

#!/bin/bash

hensu="apple lemon banana"

for i in ${hensu}
do
    echo ${i}
done

実行結果

実行結果

$ ./for.sh
apple
lemon
banana

csh

csh

#!/bin/csh

set hensu="apple lemon banana"
foreach f (${hensu})
    echo ${f}
end

実行結果

実行結果

$ ./for.sh
apple
lemon
banana

case文

bash

以下は配列リストの値をfor文で1つずつ渡して各ケースに当てはめた例です。

bash

#!/bin/bash

hensu="apple lemon banana grape"

for i in ${hensu}
do
    case ${i} in
      "apple")
        echo "appleです"
        ;;
      "lemon")
        echo "lemonです"
        ;;
      "banana")
        echo "bananaです"
        ;;
      *)
        echo "どれでもありません。"
        ;;
    esac
done

実行結果

実行結果

$ ./case.sh
appleです
lemonです
bananaです
どれでもありません。
issiki_wp

Share
Published by
issiki_wp