私はこのbashシェルスクリプトガイドに従っています:
数値比較のセクションでは、例を挙げています。
anny > num=`wc -l work.txt`
anny > echo $num
201
anny > if [ "$num" -gt "150" ]
More input> then echo ; echo "you've worked hard enough for today."
More input> echo ; fi
上記のように思われるのは、コマンドの文字列をbash変数に格納してから、変数に対してエコーを呼び出すことです。発生しているように見えるのは、文字列が評価されてwcコマンドが実行され、制御端末に行数が返されることです。
それでは、Ubuntu 12.04で端末を起動して、同様のことを試してみます。
$ touch sample.txt && echo "Hello World" > sample.txt
$ cat sample.txt
Hello World
$ num='wc -l sample.txt'
echo $num
wc -l sample.txt
文字列を評価せずに行数を返します。これは文字列をターミナルにエコーしました。なぜ異なる結果が得られたのですか?
wc -l work.txt
、代わりにそれは数201を割り当てられている