Câu trả lời:
#!/bin/sh
if [ "$#" -ne 1 ] || ! [ -d "$1" ]; then
echo "Usage: $0 DIRECTORY" >&2
exit 1
fi
Dịch: Nếu số lượng đối số không (bằng số) bằng 1 hoặc đối số đầu tiên không phải là một thư mục, sử dụng đầu ra cho thiết bị lỗi chuẩn và thoát với mã trạng thái lỗi.
Báo cáo lỗi thân thiện hơn:
#!/bin/sh
if [ "$#" -ne 1 ]; then
echo "Usage: $0 DIRECTORY" >&2
exit 1
fi
if ! [ -e "$1" ]; then
echo "$1 not found" >&2
exit 1
fi
if ! [ -d "$1" ]; then
echo "$1 not a directory" >&2
exit 1
fi
if [ "$#" -ne 1 ] ; then
hoặc if ! [ -d "$1" ]; then
để xem mệnh đề nào gây rắc rối.
-d
có liên quan. Nếu bạn muốn thêm một kiểm tra riêng, bạn có thể sử dụng -e
để kiểm tra sự tồn tại.
-e
trả về true nếu tập tin tồn tại Tôi đã thêm báo cáo lỗi thân thiện hơn cho câu trả lời.
kịch bản mèo.sh
var1=$1
var2=$2
if [ "$#" -eq 2 ]
then
if [ -d $var1 ]
then
echo directory ${var1} exist
else
echo Directory ${var1} Does not exists
fi
if [ -d $var2 ]
then
echo directory ${var2} exist
else
echo Directory ${var2} Does not exists
fi
else
echo "Arguments are not equals to 2"
exit 1
fi
thực hiện nó như dưới đây -
./script.sh directory1 directory2
Đầu ra sẽ như thế nào -
directory1 exit
directory2 Does not exists
Bạn có thể kiểm tra tổng số đối số được truyền trong dòng lệnh bằng " $#
"
Nói ví dụ: tên tập lệnh shell của tôi làhello.sh
sh hello.sh hello-world
# I am passing hello-world as argument in command line which will b considered as 1 argument
if [ $# -eq 1 ]
then
echo $1
else
echo "invalid argument please pass only one argument "
fi
Đầu ra sẽ là hello-world
shell
có nghĩa là/bin/sh