【发布时间】:2018-06-11 11:47:22
【问题描述】:
vim mytest.sh
1 #!/bin/bash
2
3 ARGS=`getopt -o ab: -l "argv3:,help" -- "$@"`
4 eval set -- "${ARGS}"
5
6 while true;
7 do
8 case "$1" in
9 -a)
10 echo "i am a"
11 shift
12 ;;
13 -b)
14 echo "i am b, my value is $2"
15 shift 2
16 ;;
17 --argv3)
18 echo "i am argv3, my value is $2"
19 shift 2
20 ;;
21 --help)
22 echo "i am help info"
23 exit 0
24 ;;
25 --)
26 shift
27 break
28 ;;
29 *)
30 echo "Internal error!"
31 exit 1
32 ;;
33 esac
34 done
-
"$@"扩展为单独的参数列表。-- "$@"在 getopt 中是什么意思?如果我将第 3 行更改为ARGS=`getopt -o ab: -l "argv3:,help"`
test.sh? 的哪个函数会消失
-
--)在第 25 行25 --) 26 shift 27 break 28 ;;编码者想表达什么意思?
-
*)在第 29 行在什么条件或什么参数下会引发“内部错误!”的输出在终端?
【问题讨论】:
-
" getopt 中
-- "$@"是什么意思?" -- 它没有任何特殊含义。--是一个特殊的参数,它告诉许多程序停止在其命令行中搜索选项并将剩余的参数解释为文件(或其他东西,取决于程序)。你已经知道"$@"的含义了。