問題が示すように、この記事では初心者向けのBashシェルスクリプトを取り上げます。この記事ではBashの歴史はレビューしませんが、読者がBashについて学びやすくする多くのリソースがありますし、読者は GNUプロジェクトを直接訪問することもできます。非常に基本的な概念を理解することから始まり、その知識を積み重ねていきます。
スクリプトファイルの作成
まず、スクリプトファイルを作りましょう。カレントディレクトリがホームディレクトリであることを確認してください。
touch learnToScript.sh
この時点で、ホームディレクトリに learnToScript.sh 名前のファイルが生成されます。次のコマンドを入力してファイルが存在することを確認し、パーミッションが-rw-rw-r-であることにも注意してください。
[zexcon@trinity ~]$ ls -ltotal 7drwxr-xr-x. 1 zexcon zexcon 90 Aug Desktopdrwxr-xr-x. 1 zexcon zexcon 80 Sep Documentsdrwxr-xr-x. 1 zexcon zexcon 1222 Sep Downloads-rw-rw-r--. 1 zexcon zexcon 70 Sep learnToScript.shdrwxr-xr-x. 1 zexcon zexcon 0 Jul 7 16:04 Musicdrwxr-xr-x. 1 zexcon zexcon 318 Sep Picturesdrwxr-xr-x. 1 zexcon zexcon 0 Jul 7 16:04 Publicdrwxr-xr-x. 1 zexcon zexcon 0 Jul 7 16:04 Videos[zexcon@trinity ~]$
正式に始めるには、もう一つすべきことがあります。コマンドラインに次のように入力して、何も書かずにスクリプトを実行してみてください:
./learnToScript.sh
[zexcon ~]$ ./learnToScript.shbash: ./learnToScript.sh: Permission denied
ファイルに実行パーミッションがないため、プロンプトのパーミッションが拒否されます。従って、スクリプトを実行するには、ファイルのパーミッションを変更する必要があります。パーミッションに詳しくない場合は、 Paul W. Frields による Fedora Magazine の記事を読むことをお勧めします。
パーミッションについてすでに知っているとして、ターミナルに戻って learnToScript.sh ファイルを変更し、実行パーミッションを追加します。次のように入力します:
chmod 755 learnToScript.sh
[zexcon@trinity ~]$ ls -ltotal 7drwxr-xr-x. 1 zexcon zexcon 90 Aug Desktopdrwxr-xr-x. 1 zexcon zexcon 80 Sep Documentsdrwxr-xr-x. 1 zexcon zexcon 1222 Sep Downloads-rwxr-xr-x. 1 zexcon zexcon 70 Sep learnToScript.shdrwxr-xr-x. 1 zexcon zexcon 0 Jul 7 16:04 Musicdrwxr-xr-x. 1 zexcon zexcon 318 Sep Picturesdrwxr-xr-x. 1 zexcon zexcon 0 Jul 7 16:04 Publicdrwxr-xr-x. 1 zexcon zexcon 0 Jul 7 16:04 Videos[zexcon@trinity ~]$
これですべての準備が整い、 ./learnToScript.sh コマンドの読み取り、書き込み、実行権限が与えられました。
スクリプトファイルの編集
コマンドプロンプトで次のように入力してください:
vim learnToScript.sh
これで、波線の記号がたくさん入った空のテキストファイルが開きます。キーボードで i と入力すると挿入モードになります。ターミナルウィンドウの左下を見れば、そのモードになっていることが確認できます。
次のステップは、ファイルが正しいインタープリターに認識されることを確認することです。したがって、#! と入力し、ディレクトリ /bin/bashbashを実行します:
#!/bin/bash
この記事のチュートリアルのステップで最後にすることは、文書を保存することです。Escを押して入力モードを終了し、Shift+:を押します。コロンのところに wq と入力し、Enter キーを押してファイルを書き込み、vim エディタを終了します。
ドキュメントに書き込むには i をタイプし、その時点で下に -INSERT- と表示されることを vim を使うときに覚えておいてください。ドキュメントを保存するには、Esc を押して入力モードを終了し、Shift+: を押しながら w をタイプしてファイルに書き込むか、Esc を押しながら Shift+: を押しながら q をタイプして保存せずに終了するか、wq を繋げて書き込んでファイルを閉じます。Escを押すと挿入モードが終了します。vimについての詳しい情報は 公式サイトや チュートリアルのサイトを ご覧ください。
正式にスクリプトの執筆を開始
echo コマンド
echoコマンドは、一重引用符、二重引用符、または引用符なしで、ターミナルに何らかの情報を返すために使われます。それでは、伝統的な Hello World で試してみましょう!
#!/bin/bashecho Hello World!echo 'Hello World!'echo "Hello World!"
[zexcon ~]$ ./learnToScript.shHello World!Hello World!Hello World![zexcon ~]$
上の3行が同じ結果を与えていることに注目してください。一重引用符、二重引用符、引用符なしでも同じ結果になるとは限りませんが、この基本的なスクリプトでは同じ結果になります。場合によっては、引用符の種類によって結果が異なることもあります。この時点で、最初のBashスクリプトが書けたことを祝福します。さらに多くのスクリプトを作成し、自分のアイデアを自由に発揮していくうちに、以下についてさらに学びたくなるかもしれません。
コマンドは $ と ` ` を置き換えます。
コマンド置換は次のような効果があります:コマンドラインでコマンドを実行した結果を取得し、その結果を変数に書き込みます。例えば、コマンドプロンプトで ls と入力すると、現在の作業ディレクトリのリストを取得できます。このコマンドで練習してください。コマンド置換のオプションは2つあります。1つ目はキーボードの左側にあるTabキーの上にあるバックスティックを使うことに注意してください。波線の~と同じキーです。2つ目のオプションはシェル変数を使用します。
#!/bin/bashcommand1=`ls`echo $command1command2=$(ls)echo $command2
[zexcon ~]$ ./learnToScript.shDesktop Documents Downloads learnToScript.sh Music Pictures Public snap VideosDesktop Documents Downloads learnToScript.sh Music Pictures Public snap Videos[zexcon ~]$
変数、等号、コマンドの先頭の間にスペースがないことに注意してください。両方のオプションを使用すると、まったく同じ結果になります。変数はドル記号で始まる必要があることに注意してください。ドル記号のないコマンド変数を忘れて echo すると、以下のようにコマンド名だけが出力されます:
#!/bin/bashcommand1=`ls`echo command1command2=$(ls)echo command2
[zexcon ~]$ ./learnToScript.shcommand1command2[zexcon ~]$
二重括弧 )
では、二重括弧は何に使うのでしょうか? 簡単に言うと、二重括弧は数学の方程式で使われます。
#!/bin/bashecho $((5+3))echo $((5-3))echo $((5*3))echo $((5/3))
[zexcon ~]$ ./learnToScript.sh[zexcon ~]$
結論
経由




