কৌতূহলের বাইরে, যখন কোনও ব্যাশ ভেরিয়েবল তুলনা করা হয় (এর মান এটি হ'ল 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()
কোনও সমস্যা হবে না।