Vì tò mò, khi thực hiện so sánh biến bash (giá trị của nó là một integer
) có thể kiểm tra nó với một số giá trị được xác định trước được khai báo là một int
hoặc như một string
.
Kịch bản mẫu :
#!/bin/bash
f1()
{
[ "$1" == "1" ] && echo "$FUNCNAME: \"1\" compared as string"
}
f2()
{
[[ "$1" -eq 1 ]] && echo "$FUNCNAME: \"1\" compared as int"
}
f1 $1
f2 $1
Đầu ra :
$ ./param.sh 1
f1: "1" compared as string
f2: "1" compared as int
và
$ ./param.sh blah
$
Cả hai hàm hoạt động theo cùng một cách, và vì vậy tôi tự hỏi liệu có cách nào ưa thích khi kiểm tra một biến số nguyên không? Tôi sẽ đi kiểm tra int
so với int
vì nó nghiêm ngặt hơn nhưng tôi tự hỏi liệu có bất kỳ trở ngại nào khi thực hiện string
không?
Trong trường hợp này, f2()
cũng nghiêm ngặt hơn về so sánh, tức là việc chuyển một giá trị thập phân sẽ phá vỡ nó, trong khi đó f1()
sẽ không có vấn đề gì.