if ! local TEMP="$(getopt -o "ndk:f:ha:s:" -l "native-build,debug,kernel:,firmware:,help,arch:,suite:" -n "$0" -- "$@")" then usage return 1 fi eval set -- "$TEMP"
时间: 2023-07-13 14:39:17 浏览: 99
这是一个 Bash 脚本命令,它的作用是解析脚本的命令行选项和参数,并将其存储在本地变量中。
具体来说,该命令使用 getopt 命令解析脚本的命令行选项和参数,并将其存储在名为 TEMP 的本地变量中。如果解析失败,则调用名为 usage 的函数并返回 1。
然后,使用 eval 命令重新设置命令行选项和参数,将它们存储在 "$@" 中。这样,脚本就可以使用 $1、$2 等变量来访问这些选项和参数了。
例如,如果有一个名为 `test.sh` 的 Shell 脚本,可以通过以下方式来解析命令行选项和参数:
```bash
#!/bin/bash
if ! local TEMP="$(getopt -o "ab:c:" -l "alpha,beta:,charlie:" -n "$0" -- "$@")"; then
usage
return 1
fi
eval set -- "$TEMP"
while true; do
case $1 in
-a|--alpha)
echo "Option -a is set"
shift ;;
-b|--beta)
echo "Option -b is set with argument: $2"
shift 2 ;;
-c|--charlie)
echo "Option -c is set with argument: $2"
shift 2 ;;
--)
shift
break ;;
*)
usage
return 1 ;;
esac
done
echo "Remaining arguments: $@"
```
在该脚本中,使用 `getopt` 命令解析命令行选项和参数,并将其存储在名为 TEMP 的本地变量中。然后,使用 `eval set` 命令重新设置命令行选项和参数,将它们存储在 "$@" 中。接下来,使用 while 循环和 case 语句逐个处理命令行选项和参数,并使用 `shift` 命令将已处理的选项和参数从 "$@" 中移除。最后,使用 `$@` 输出剩余的参数。
阅读全文