[過去ログ] くだらねえ質問はここに書き込め! Part 234 (1002レス)
上下前次1-新
抽出解除 レス栞
このスレッドは過去ログ倉庫に格納されています。
次スレ検索 歴削→次スレ 栞削→次スレ 過去ログメニュー
313(5): 2018/12/13(木)09:47 ID:g4Xg+Gp3(1/5) AAS
[[ -z $hoge ]] や [[ -n $hoge ]]
って必要ですか?
[[ $hoge ]] とか [[ ! $hoge ]] で代用できそうなんですが…
何が違うんでしょ
314(2): 2018/12/13(木)10:41 ID:9d5jxDGh(1/4) AAS
>>313
もし$hogeの値が「-e /dev/null」とかだったらどうするのよ。
316: 313 2018/12/13(木)11:09 ID:g4Xg+Gp3(2/5) AAS
>>314
自分も試してみましたが、問題ないようです
317(1): 313 2018/12/13(木)12:10 ID:g4Xg+Gp3(3/5) AAS
さらにいろいろ試してみましたが
変数の内容がオプションと解釈されてしまって真偽値に影響がでるケースとして
hoge='-e unknown'
[ $hoge ] || echo null
とやってみるとhogeは空でも未定義でもないのに
nullと表示されてしまい、本来の意図とは違う結果になるようです
ただこれも解決方法があり
[ "$hoge" ] || echo null
とすれば意図したテストができるようです
もとより[[を使えば引用符もいらないみたいですね
省3
319: 313 2018/12/13(木)12:39 ID:g4Xg+Gp3(4/5) AAS
>>318
そうなんですね
じゃあやはりPOSIXの範囲内では[の後に-nや-zを使った方が
変数の内容を意図せずオプションと解釈されてしまう場合でも
エラーになって気づくので安全と言えば安全なのかもしれませんね
うっかり変数を引用符で囲み忘れる場合もあるだろうし
322: 313 2018/12/13(木)13:11 ID:g4Xg+Gp3(5/5) AAS
最近の言語を何かしらやってる人間にとっては変数の空文字列チェックを
変数そのものでやるというのも馴染みがあってわかりやすいので
できればそうしたいと思ったんですよね
最初の質問の趣旨に戻りますが、-zや-nを使わなくても同等のテストが
できるということで間違いないなら
[[ $hoge ]] [[ ! $hoge ]]
や
[ "$hoge" ] [ ! "$hoge" ]
の方が個人的には読みやすいかな
よくよく考えたら自分はbashしか使わないので便利な[[で事足りそう
上下前次1-新書関写板覧索設栞歴
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル
ぬこの手 ぬこTOP 0.038s