シェルとシェルスクリプト 2 シェルスクリプト
シェルスクリプト
シェルスクリプトの作成
シェルスクリプトはテキストで記述する。lsとdateコマンドを実行するシェルスクリプトを記述してみる。
$ vi lsdate.sh (lsdate というファイルを作成する)
インサートモードで以下のように記述する。その後保存して終了する。( ESC キーの後に :wq )
#!/bin/bash ls date
1行目に利用するシェルの種類とそのコマンド位置を記述する。シェルには数種類あるが、今回は bash を使用する。1行目にシェルを指定、2行目以降に実行するコマンドを1行ず入力していく。
パーミッションの変更
作成したシェルスクリプトを実行するには、パーミッションを変更してファイルの実行権限をつける必要がある。現在のシェルスクリプトに実行権限があるかどうか確認する。
lsコマンドでファイルのアクセス権限を確認する。
$ ls -l lsdate.sh -rw-rw-r-- 1 hoge staff 20 2 1 14:17 lsdate.sh
実行権限を付与するために、chmod コマンドを実行する。
$ chmod u+x lsdate.sh $ ls -l lsdate.sh -rwxrw-r-- 1 hoge staff 20 2 1 14:17 lsdate.sh
これで、所有者に実行権限を与えることができた。早速実行してみる。
$ ./lsdate.sh 0072 HTML & CSS Pictures projects umask0022 umasl0022 Applications JavaScript Public ruby umask0070 user Desktop Library chownfile sinatra umask0072 vireplace.txt Documents Movies idbitfile test umask020 名称未設定フォルダ Downloads Music lsdate.sh umask umask022 2021年 2月 1日 月曜日 14時18分59秒 JST
./ というのはパス指定である。意味は 「 カレントディレクトリにある ( lsdate.sh を実行せよ ) 」 ということである。ls や cp を実行するときはパスが通っているので、このようなパス指定は必要ない。
今回はカレントディレクトリにある特定のシェルスクリプトを実行するために、パス指定を行った。lsdate.shの中に記述された、ls コマンドと date コマンドが順に実行されたことがわかる。
コメント
コメントとは、プログラム上に書く注釈のことである。シェルの場合は # で始まる行がコメントとして認識され、プログラムの実行時はコメントは無視される。コメントは多くの場合、プログラマーが記述したプログラムがどういった処理をするのかを記述したり、一時的に特定の処理を無効化 ( コメントアウト ) する場合に利用する。
$ vi lsdate.sh #!/bin/bash ls #date
シェルスクリプトを実行する
$ ./lsdate.sh 0072 HTML & CSS Pictures projects umask0022 umasl0022 Applications JavaScript Public ruby umask0070 user Desktop Library chownfile sinatra umask0072 vireplace.txt Documents Movies idbitfile test umask020 名称未設定フォルダ Downloads Music lsdate.sh umask umask022 ( date コマンドが無視されている。 )
echo コマンド
echo コマンドは引数で与えた文字列を標準出力に出力するコマンドである。
$ echo [ オプション ] 文字列
オプション
-n 改行を抑制する。通常の出力は改行されるが、このオプションがあると、改行されない。
実行例
$ echo Message test Message test ( echo コマンドで指定された文字列を表示する )