似乎我继续使用以下内容获取-gt或==错误。有人可以帮忙吗?
flag= echo $flightSeatBooked | awk -F[,] '{print match($flightSeatBooked, $orderSeats)}'
if $flag == 0; then
echo "Success";
else
echo "fail";
假设:
flightSeatBooked= 9;,A1,A2,A3,A4,B2,E4,C3,B3,D3,D2,E1,E2,C2,B4,C4,D4,C1,D1,E3,B1
orderSeats= B2 (not found in the variable)
预期产量: 成功
答案 0 :(得分:1)
相当多的错误。改变它:
flag=$(echo $flightSeatBooked | awk -v flseat=$flightSeatBooked -v orseat=$orderSeats '{print match(flseat, orseat)}')
if [ $flag -eq 0 ]; then
echo "Success";
else
echo "fail";
fi
答案 1 :(得分:1)
这就是你要问的方法:
flag=$(awk -v flseat="$flightSeatBooked" -v orseat="$orderSeats" 'BEGIN{print index(flseat, orseat)}')
if [ $flag -eq 0 ]; then
echo "Success"
else
echo "fail"
fi
但我不认为你问的是个好主意。它至少应该是这样的:
awk -v flseat="$flightSeatBooked" -v orseat="$orderSeats" 'BEGIN{exit index(flseat, orseat)}')
if [ $? -eq 0 ]; then
echo "Success"
else
echo "fail"
fi
你真正需要的就是这样:
case "$flightSeatBooked" in
*"$orderSeats"* ) echo "fail";;
* ) echo "Success" ;;
esac
检查逻辑(因为我没有!),但希望你能得到这个方法。
答案 2 :(得分:0)
您也可以使用以下内容检查$ orderSeats是否在$ flightSeatBooked中。如果它在那里它返回匹配的字符串的长度或返回0。
expr "$flightSeatBooked" : ".*,${orderSeats},"