「Transwiki:Bash Shell Scripting」の版間の差分

ナビゲーションに移動 検索に移動
; <tt>''string'' != ''pattern''</tt> : 文字列<tt>''string''</tt> がパターン <tt>''pattern''</tt>にマッチし''ない''場合に真
In the last three types of tests, the value on the left is usually a variable expansion; for example, 上の最後の3つのテストで、左の値は通常変数展開を行います。例えば、<tt>[[<nowiki/> "$var" = 'value' ]]</tt> returns a successful exit status if the variable named が真を返すのは、<tt>var</tt> contains the value 変数の値に<tt>value</tt>.という文字列が含まれている場合です。
The above conditions just scratch the surface; there are many more conditions that examine files, a few more conditions that examine strings, several conditions for examining integer values, and a few other conditions that don't belong to any of these groups.
よく使用される、等値テストの使用方法としては、スクリプトの最初の引数(<tt>$1</tt>)が特別なオプションかどうかを調べるというものがあります。例えば、<tt>source1.txt</tt> または <tt>source2.txt</tt> を <tt>destination.txt</tt>にコピーしようとする<tt>if</tt>ステートメントを考えてみましょう。上のバージョンは非常に''verbose(冗長)" です。多くの出力を生成します。通常わたしたちはそんなに多くの出力を生成するスクリプトを作成したいと思いません。しかし私達はユーザーに出力できるように求められるかもしれません。例えば第一引数に<tt>--verbose</tt>渡された場合です。次のスクリプトは上の<tt>if</tt>ステートメントと同じですしかし、第一引数が<tt>--verbose</tt>である場合だけ出力します。
One common use for equality tests is to see if the first argument to a script (<tt>$1</tt>) is a special option. For example, consider our <tt>if</tt> statement above that tries to copy <tt>source1.txt</tt> or <tt>source2.txt</tt> to <tt>destination.txt</tt>. The above version is very "verbose": it generates a lot of output. Usually we don't want a script to generate quite so much output; but we may want users to be able to request the output, for example by passing in <tt>--verbose</tt> as the first argument. The following script is equivalent to the above <tt>if</tt> statements, but it only prints output if the first argument is <tt>--verbose</tt>:
<source lang="bash">#!/bin/bash
Later, when we learn about shell functions, we will find a more compact way to express this. 後者は、このあとで学習するシェル関数を学んだとき、これをよりコンパクトに書く方法がわかるでしょう。(In fact, even with what we already know, there is a more compact way to express this: rather than setting 事実、私達がすでに知っているように、これをコンパクトに表現できます。<tt>$verbose_mode</tt> to変数に <tt>TRUE</tt> orまたは <tt>FALSE</tt>, we can set を設定するのではなく、<tt>$echo_if_verbose_mode</tt> to <tt>echo</tt> orまたは <tt>:</tt>, where the colon を設定することでコンパクトにできます。ここで、コロン<tt>:</tt> is a Bash built-in command that does nothing. We can then replace all uses of のビルトインコマンドで何もしないコマンドです。それから<tt>echo</tt> with <tt>"$echo_if_verbose_mode"</tt>. A command such as に置き換えます。<tt>"$echo_if_verbose_mode" ''message''</tt> would then become コマンドは、verbose-modeが有効な場合<tt>echo ''message''</tt>, printing コマンドになり、<tt>''message''</tt>, if が表示します。verbose-mode is turned on, but would become <tt>: ''message''</tt>, doing nothing, if verbose-mode is turned off. However, that approach might be more confusing than is really worthwhile for such a simple purpose.が無効な場合なにもしないコマンドになります。しかし、この方法は混乱させてしまうかもしれません。)