シェルスクリプト入門 その1 入力、出力、変数
はじめに
動機
シェルスクリプトを最近(ようやく?)、自分で書くようになってきました。 スクリプト言語と違うところ及び自分の頭の整理のために書いていきます。
シェルクスクリプトとは
シェルスクリプトとはunixコマンドを一つのファイルにまとめて実行するプログラムです。
利用シーン
などなど、使えると色々と便利なのは間違いありません!
入力、出力
とりあえず hello world
#!/bin/sh echo "hello world" # hello world
と書いて、実行すると、hello world
と出力されます!
$ sh hello.sh $ hello world
重要なポイントは以下の点です。
- 文頭に
#!/bin/sh
と記述。 - シェルスクリプトは
unixコマンドが使える
- 今回は
echo
を使用
- 今回は
- コメントは
#
と記述した後に記述
標準入力、出力
- read で値を標準入力
- echoで値を出力します。
#!/bin/sh read input echo "input=$input"
$ sh read.sh $ hello $ input=hello
といった形で標準入力、出力が行えます!
変数
重要なポイントは以下の通りです。
- 変数に値を与える際、
variable=hoge
といったようにスペースをつけない - 宣言した変数をアクセスする際は 先頭に
$
をつける。 readonly
を用いると変数を上書きされない。readonly
を解除するにはunset
を用いる。
#!/bin/sh variable=hoge #スペースを入れない echo $varible #変数にアクセスする際は$をつける
$ sh variable01.sh $ hoge
また、readonly
と宣言すると、変数の上書きがされません。
#!/bin/sh variable="変数" echo "$variable" readonly variable variable="変更"
$ sh variable02.sh $ 変数 $ variable02.sh: line 5: variable: readonly variable
特別な変数
個人的に使用頻度が高いと思われるものに絞ります。
- $0 [スクリプト名]
- $1 ~ $9 [引数をアクセス 数字は引数の順番を示す]
- $$ [実行したプログラムのプロセスID]
#!/bin/sh echo $0 #special_varable.sh echo $1 #1つ目の引数を出力 echo $$ #プロセスIDを出力