2012-04-12 32 views
6

Tôi đang cố gắng để so sánh một cuộc tranh cãi trong bash dưới OSX sử dụng đoạn mã sau ...Bash: Làm thế nào để so sánh các đối số với câu lệnh if?

#!/bin/bash 

if ["$1" == "1"] 
then 
     echo $1 
else 
     echo "no" 
fi 

Nhưng tôi vẫn gặp lỗi sau

$bash script.sh 1 

script.sh: line 3: [1: command not found 
no 

Làm thế nào để ngăn chặn nó từ cố gắng để đánh giá "1"?

Trả lời

18

[ là một lệnh kiểm tra, vì vậy bạn cần một không gian giữa ["$1", cũng như một khoảng trống giữa "1" và bế mạc ]

Sửa

Chỉ cần làm rõ, không gian là cần thiết bởi vì [ là một cú pháp khác nhau của lệnh bash test, do đó, sau đây là một cách khác để viết tập lệnh:

#!/bin/bash 

if test "$1" == "1" 
then 
     echo $1 
else 
     echo "no" 
fi 

Có thể đơn giản hơn nữa để

#!/bin/bash 
[ "$1" == "1" ] && echo "$1" || echo "no" 
+0

không thể nhập đủ nhanh :) – KevinDTimm

Các vấn đề liên quan