我正在创建一个bash脚本来执行一些文件/文件夹比较。
我需要用户提供两个文件/文件夹路径和一些选项,如果需要(任何不同的应该关闭程序)。
我想知道怎样才能"抓到"不包括选项的输入参数的个数。
下面是一些示例代码(文件名为foo):
#!/bin/bash
set -e
Help()
{
# Display Help
echo -e "I am the help menu"
}
############################################################
# Main program
# Process the input options.
while getopts ":he" option; do
case $option in
h) # display Help
Help
exit;;
e) # Exclude Files
echo -e "e option was selected";;
?) # Invalid option
echo -e "Error: Invalid option"
exit;;
esac
done
# Code to filter the input in order to have only two user inputs + options
file1=$1;
file2=$2;
echo -e file1
echo -e file2
因此,如果用户使用:foo -e "someparameter" file1 file2
,它应该工作
如果:foo file1
给出一个错误
我该怎么做?
致以最亲切的问候if:foo file1 file2 file3
也应该给出一个错误。
在手册页中有解释。
shift $(($OPTIND - 1)) printf "Remaining arguments are: %sn$*"
使用$#
检查参数的个数