LoginSignup
7
10

More than 5 years have passed since last update.

シェルスクリプトの文字列比較

Last updated at Posted at 2013-02-10
if [ -n 'a' ]; then echo unk; fi #=> unk

if [ -n '' ]; then echo unk; fi #=>

ここまではいい.

if [ -n ]; then echo unk; fi #=> unk

(゜ω。)????

if [ -n $1 ]; then
  echo unk;
fi

上記のような,引数で受け取った文字列が空だったら… 的な分岐をしたいのですがナムサン! [ コマンドが -n オプションで引数を受け取れずに爆発四散! (だと思うのですが… 間違ってたら指摘お願いします)

で結局,

if [ -n "$1" ]; then
  echo unk;
fi

こうでした.シェルスクリプトしんどい><

最近,いちいち Ruby とか使わずとも,確実に組み込みされてる bash で簡単なスクリプトなら書きたい… な欲求が高まってきているのですがこういうことで時間食いたくない…

今この投稿に至るまでの流れはこんな感じ.

  1. if コマンドに [ コマンドを続けてそのオプションとして条件式を渡す,つまりちゃんとスペースを入れないとね.そういう罠にはもうハマらない!ニワカは相手にならんよ!
  2. -eq オプションって数値のときしか使えないんだったのか… 文字列なら普通に = とかそんなん考慮しとらんよ…
  3. if [ $1 = '' ]; ... って書くと何かエラー起こる.なにこれもー><
  4. if [ = '' ]; ... の形になってしまうからダメらしい.変数の展開が先走ってんなー.ルールによっちゃそういうんもええやろけど…
  5. 空文字列かどうかは -n で判定出来るらしい.
  6. 投稿のネタ部分に至る.
  7. 地に撒いた種 (失敗) が木々になり… (知識として) 実る頃… 収穫の時 (ハーベストタイム) …!
  8. 解決なう

code snippet

参考

7
10
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
7
10