ユーザの入力情報を取り扱うときには、誤ってスペースを入力されたことを考慮した対策が必要です。 入力情報を変数に代入していた場合は先頭・末尾のtrim処理を行っておくと良いです。
Bashシェルスクリプトでtrimを実行する方法はいくつかあるので取り上げてみました。
前提
入力情報は INPUT という変数に格納しておきます。
| |
変数の前後から不要なスペースを除去し、以下のように出力されるようにしたいと思います。
| |
trimの方法1:sed
僕の中ではセオリー。
余談ですが、 sed が使えると head や tail や tr も代用できるし非常に便利です。万能ナイフ。
| |
変数に代入して使うこともできます。
$ X="$(echo "${INPUT}" | sed 's/^ *\| *$//')"
$ echo "${X}"
genzouw postit
trimの方法2:単純にechoする
ただechoに食わせるだけ。
| |
簡単でよいが、問題はあります。 中央部分のスペースが1つにマージされてしまいます。
| |
trimの方法3:xargsに食わせる
実は、 方法2 と大きな違いはない。
| |
trimの方法4:Bash組み込みの変数参照機能を使う
Bashの組み込み機能として、変数参照時に先頭あるいは末尾から特定の文字を除去する機能があります。 ただし、1スペースずつしか除外できません。
| |
前後以外にスペースがない状況であればいっそすべて置換してしまうという方法も取れます。
| |
trimの方法5 : tr
こちらも、文字列の内側にスペースがないという前提があれば利用できる方法です。
tr コマンドを使います。
| |
ひとこと
万能なのは sed ではないでしょうか。