#!/bin/bash
function getComment(){
local lang=$1;
local theComment=$2;
if [$lang == "Java"] #Surprisingly, an error occurs here: prog.sh: line 6: [Java: command not found
then
echo "//"$theComment; return;
else
echo "Language not found!"; return;
fi
}
getComment "Java" "Whoo!";
exit $?
Tôi đang viết một kịch bản Bash so sánh một biến thành một chuỗi theo nghĩa đen, và tôi đang sử dụng [$lang == "Java"]
(như trình bày ở trên) để so sánh giá trị của lang
-"Java"
. Tuy nhiên, so sánh này tạo ra các lỗi sau:Hãy so sánh một chuỗi Bash đen cho một biến địa phương
stderr:
prog.sh: line 6: [Java: command not found
Tôi đã cố gắng sử dụng [$lang -eq "Java"]
và ($lang -eq "Java")
là tốt, nhưng những báo cáo đã không làm việc một trong hai, và họ được sản xuất một cách chính xác các lỗi tương tự.
Tại sao lỗi này xảy ra và cách chính xác để so sánh biến cục bộ với chuỗi ký tự là gì?
Điều này không liên quan đến câu hỏi của bạn, nhưng bạn không cần dấu chấm phẩy ở cuối dòng trong trình bao. Chúng chỉ cần thiết nếu bạn đặt nhiều lệnh trên một dòng. –
có thể trùng lặp của [bash, lệnh không tìm thấy] (http://stackoverflow.com/questions/16694586/bash-command-not-found) – chepner
Không phải là bản sao tốt nhất, nhưng có nhiều câu hỏi trên Stack Overflow với cùng một câu trả lời : đặt dấu cách xung quanh '[' và ']' của lệnh 'test'. – chepner