จากความอยากรู้เมื่อทำการเปรียบเทียบตัวแปรทุบตี (ความคุ้มค่าเป็นinteger
) ก็เป็นไปได้ที่จะทดสอบกับค่าที่กำหนดไว้ล่วงหน้าบางส่วนประกาศว่าจะเป็นหรือเป็นint
string
สคริปต์ตัวอย่าง :
#!/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
ผลผลิต :
$ ./param.sh 1
f1: "1" compared as string
f2: "1" compared as int
และ
$ ./param.sh blah
$
ฟังก์ชั่นทั้งสองทำงานในลักษณะเดียวกันฉันจึงสงสัยว่ามีวิธีที่ต้องการหรือไม่เมื่อตรวจสอบตัวแปรจำนวนเต็ม? ฉันจะไปตรวจสอบint
กับint
มันเพราะมันเข้มงวดมากขึ้น แต่ฉันก็สงสัยว่ามีการดึงกลับมาทำด้วยstring
หรือไม่?
ในกรณีf2()
นี้มีความเข้มงวดมากขึ้นเกี่ยวกับการเปรียบเทียบเช่นการส่งค่าทศนิยมจะทำให้แตกในขณะที่f1()
จะไม่มีปัญหา