Trong bash tôi test
có một thái độ để thoát với tình trạng 0
:BASH: [] (thử nghiệm) cư xử unconformly
$ test -n && echo true || echo false
-> true
khi
$ test -n "" && echo true || echo false
-> false
Nó có nghĩa là khi nó không nhận được bất kỳ tranh cãi ở tất cả, nó giả định nonzero.
Trường hợp -z
hoạt động đúng thay vì:
$ test -z && echo true || echo false
-> true
$ test -z "" && echo true || echo false
-> true
Đây có phải là hành vi mong đợi?
Câu hỏi hay. Tôi cũng tự hỏi _why_ cả hai 'test -n' và' test -z' (không có đối số) đều thành công. –
Hãy cẩn thận với '&&' và '||'! Hãy thử mã này: 'touch ~/x && touch/x || echo fail' - nếu 'touch/x' không thành công,' fail' sẽ được in! – uzsolt