Thiếu tập lệnh Bash ']' [đã đóng]


81

Tôi đang gặp lỗi ./test.sh: dòng 13: [: thiếu `] 'trong tệp test.sh Tôi đã thử sử dụng dấu ngoặc và các tùy chọn khác như -a hoặc bằng cách kiểm tra kích thước của tệp p1 nhưng lỗi là luôn ở đó và câu lệnh else luôn được thực thi bất kể đầu vào đã cho. Tôi thậm chí đã thử bằng cách loại bỏ dấu; ở dòng 13 nhưng nó không giúp được gì.

test.sh

#!/bin/bash
echo "Enter app name"
read y
$y &
top -b -n 1 > topLog.log
#-w checks for the whole word not and sub string from that word
grep -w "$y" topLog.log > p1
#-s option checks if the file p1 is present or not
if [ -s "p1"];  #line 13
then 
    echo "Successful "
else
    echo "Unsuccessful"
fi
rm p1

Tôi là người mới tập viết kịch bản nên nếu có sai sót ngớ ngẩn nào, xin thứ lỗi.

Câu trả lời:



38

Tôi gặp lỗi này khi cố gắng sử dụng &&toán tử bên trong dấu ngoặc đơn như [ ... && ... ]. Tôi đã phải chuyển sang [[ ... && ... ]].


Tôi cũng đang sử dụng && với if và nó đã giải quyết được vấn đề của tôi.
Praveen Patel

Tôi đang sử dụng toán tử == và gặp vấn đề tương tự, việc chuyển sang dấu ngoặc vuông kép đã được giúp đỡ, cảm ơn!
Vishnu Nair



0

Nếu bạn đã tạo tập lệnh của mình trên windows và muốn chạy nó trên máy linux và bạn chắc chắn rằng không có lỗi trong mã của mình, hãy cài đặt dos2unix trên máy linux và chạy dos2unix yourscript.sh. Sau đó, chạy tập lệnh.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.