直接传参
一般情况下直接传参,比如
test.sh
1 2
| #!/bin/bash echo hello $1
|
./test.sh world
hello world
使用getopts解析参数
这种方法可以忽略参数位置,使脚本更完善
test.sh
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
| while getopts "a:b:c" arg do case $arg in a) echo "a $OPTARG" ;; b) echo "b $OPTARG" ;; c) echo "c" ;; ?) echo "unkonw argument" exit 1 ;; esac done
|
1 2 3 4
| ~$ ./test.sh -a 1 -b 2 -c a 1 b 2 c
|
使用shift
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36
| #!/bin/bash
help() { cat <<-EOF 这里是帮助文档 EOF }
[ $# -eq 0 ] && help && exit 0 while [[ $# -gt 0 ]]; do case "$1" in -n | --name) name="$2" shift ;; -c | --count) count="$2" shift ;; -h | --help) help exit 0 ;; --) shift ;; *) help exit 0 esac shift done
echo name: $name echo count: $count
|