Tôi không chắc bạn có muốn phát hiện xem biến là unset
hoặc empty
. Đây là 2 thứ khác nhau.Cụ thể, một biến thể được thiết lập nhưng được sản phẩm nào:
$ var=""
$ if [ -z "$var" ]; then echo empty; fi
$ empty
Cùng đang xảy ra ở đây:
#!/usr/bin/env bash
set -u
echo $1
Test:
$ ./test.sh
./test.sh: line 4: $1: unbound variable
$ ./test.sh ""
$
Hoặc ở đây:
#!/usr/bin/env bash
tag=${1?Need a value}
echo $tag
Kiểm tra:
$ ./se.sh
./se.sh: line 3: 1: Need a value
$ ./se.sh ""
$
Các áp phích khác đã trình bày các cách chính xác để phát hiện biến chưa được đặt và trống. Cá nhân tôi thích cách này phát hiện các biến rỗng và unset:
#!/usr/bin/env bash
if [ "$1"A = A ]
then
echo variable is empty or unset
fi
Test:
$ ./empty.sh ""
variable is empty or unset
$ ./empty.sh
variable is empty or unset
$ ./empty.sh 1
$
Nguồn
2015-07-01 15:28:34
http://mywiki.wooledge.org/BashGuide/TestsAndConditionals#Conditional_Blocks_.28if.2C_test_and_.5B.5B.29 –
nên một biến bao gồm khoảng trắng chỉ như thế này: 'var =" "' được coi trống rỗng hay không? –
có, biến bao gồm khoảng trắng, được xem là trống. về cơ bản, tôi đang nghĩ để đặt một tờ séc như thể [[! -z "$ {Tag}" && "$ {Tag}"! = ’’]] cho việc này. –