脚本使用的例子
./foo.sh -v -r /home/ -s /home/user/file ./foo.sh -r /home/ -s /home/user/file
在参数中,我总是需要一个文件或文件夹来扫描数据库的文件(-s数据库文件)
在foo.sh里面
function entrance() { while getopts "v:r:s" opt; do case $opt in v) echo "-v was triggered, Verbose mode" >&2 ;; r) echo "-r was triggered, recursive mode: $OPTARG" >&2 ;; s) echo "-s was triggered, DATABASE: $OPTARG" >&2 ;; \?) echo "Invalid option: -$OPTARG" >&2 exit 1 ;; :) echo "Option -$OPTARG requires an argument." >&2 exit 1 ;; esac done }
我不知道为什么它不起作用。
请修理我
谢谢
调用函数时,您可能已经忘记了$ @。 看到这个:
#!/bin/bash function entrance() { while getopts "v:r:s" opt; do case $opt in v) echo "-v was triggered, Verbose mode" >&2 ;; r) echo "-r was triggered, recursive mode: $OPTARG" >&2 ;; s) echo "-s was triggered, DATABASE: $OPTARG" >&2 ;; \?) echo "Invalid option: -$OPTARG" >&2 exit 1 ;; :) echo "Option -$OPTARG requires an argument." >&2 exit 1 ;; esac done } entrance "$@"
还有一些解释: 在bourne shell的用户自定义函数中使用getopts