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