[ $Server_Name=1 ]
tidak berfungsi seperti yang dimaksudkan karena sintaks di dalam tanda kurung tunggal tidak khusus untuk Bash. Seperti biasa, variabel $Server_Name
akan diganti dengan 1, sehingga semua perintah test ( [
) melihat adalah argumen tunggal: string 1=1
. Karena sengatan itu memiliki panjang non-nol, tes mengembalikan true .
Untuk shell yang mematuhi POSIX, Anda dapat menggunakan perintah tes berikut :
[ "$Server_Name" = 1 ]
cek adalah $Server_Name
sama dengan string 1
.
[ "$Server_Name" -eq 1 ]
cek adalah $Server_Name
sama dengan angka 1
, yaitu, ia melakukan perbandingan angka bukannya perbandingan string.
Nilai balik dari kedua perintah akan berbeda, misalnya, jika Anda mendefinisikan Server_Name=01
. Yang pertama akan mengembalikan false, yang kedua akan mengembalikan true.
Perhatikan bahwa jika ada kemungkinan variabel $Server_Name
tidak terdefinisi, itu harus dikutip atau tes akan menampilkan kesalahan ketika dipanggil.
if [ ! "x$var" = "x" ]; then\n if [ $var -eq 1 ]; then ...