Đây là mã của tôi:So sánh tham số dòng lệnh để một chuỗi
#!/bin/bash
if [ "$#" -ne 2 ] ; then
echo "$0: exactly 2 arguments expected"
exit 3
fi
if [$1 != "file" -a $1 != 'dir'] ; then
echo "$0: first argument must be string "file" or "dir""
exit 1
elif [-e $2 -a -r $2]; then
if ["$1" = "file" -a -f $2] ; then
echo YES
elif ["$1" = "dir" -a -d $2] ; then
echo YES
else
echo NO
fi
exit 0
else
echo "$0: $2 is not a readable entry"
exit 2
fi
Nếu tôi chạy ./lab4 file filename1
nó sẽ kiểm tra nếu tham số đầu tiên là chuỗi "tập tin" hoặc "dir", sau đó nếu tham số đầu tiên là "file" và filename1 là một tập tin, nó sẽ in có. Cùng một điều cho dir.
Nó không nhận dạng $1
và $2
. Mã sẽ xuất:
./lab04Q2: line 7: [file: command not found
./lab04Q2: line 10: [-e: command not found
mặc dù tôi đã đặt 2 tham số khi chạy chương trình.
Xin chào Janson, tôi đã chỉnh sửa câu hỏi của bạn cho bạn. Trong tương lai, hãy xem xét sử dụng khoảng trống 4 khoảng trống trên bất kỳ thứ gì sẽ được coi là 'mã' trong bài đăng của bạn ở đây. –
cảm ơn tôi nghĩ thụt lề có nghĩa là sử dụng tab, nhưng điều đó đã không làm việc – JA3N