bash
もcsh
もみんな集まれ
Linuxカーネルがシェルを実行するとき、Linuxカーネルはシェルファイルの先頭行を確認します。
先頭行に#!
がある場合、Linuxカーネルは後ろに続く文字列を実行します。
例えば、#!/bin/bash
と書かれている場合は、/bin/bash
を実行します。
シェルファイルをbashで実行したい場合、シェルの先頭行に#!/bin/bash
と記述します。
bash
#!/bin/bash
echo "Hello World!"
シェルファイルをcshで実行したい場合、シェルの先頭行に#!/bin/csh
と記述します。
csh
#!/bin/csh
echo "Hello World!"
シェルファイルにshebang(シバン)が書かれている場合は、以下の方法で実行することができます。
.
はカレントディレクトリを意味します。つまり相対パス指定です。
bash
./sample.sh
以下のように絶対パス指定で実行することもできます。
bash
/home/user1/work/sample.sh
シェルファイルにshebang(シバン)が書かれていない場合でもbash指定で実行したい場合は以下の方法で実行できます。
bash
#方法1
bash sample.sh
#方法2(相対パス)
bash ./sample.sh
#方法3(絶対パス)
bash /home/user1/work/sample.sh
bash
では以下のように変数定義します。
bash
hensu="apple"
csh
では以下のように変数定義します。
csh
で変数定義するにはset
コマンドが必要です。
csh
set hensu="apple"
bash
#!/bin/bash
hensu="apple"
if [ ${hensu} = "apple" ]; then
echo "true"
else
echo "false"
fi
実行結果
実行結果
$ ./if.sh
true
bash
はfor
文で、csh
はforeach
文です。
bash
#!/bin/bash
hensu="apple lemon banana"
for i in ${hensu}
do
echo ${i}
done
実行結果
実行結果
$ ./for.sh
apple
lemon
banana
csh
#!/bin/csh
set hensu="apple lemon banana"
foreach f (${hensu})
echo ${f}
end
実行結果
実行結果
$ ./for.sh
apple
lemon
banana
以下は配列リストの値を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です
どれでもありません。