local ARGV=("$@") if ! local TEMP="$(getopt -o "ndk:f:ha:s:crg" -l "native-build,debug,kernel:,firmware:,help,arch:,suite:,customized-build,rootfs-upstream,image-size:,grub-serial,grub-target:,base-rootfs-build:" -n "$0" -- "$@")" then usage return 1 fi eval set -- "$TEMP"
时间: 2023-07-19 08:38:02 浏览: 161
这也是一段 Shell 脚本代码,它的作用是解析命令行参数(包括短参数和长参数),并将解析后的参数存入数组 ARGV 中。具体流程如下:
首先,将传入的命令行参数保存到数组 ARGV 中("$@" 表示将所有参数作为一个字符串传入数组中);
然后,使用 getopt 命令解析参数,-o 表示短参数列表,-l 表示长参数列表,-n 表示命令名,-- 表示以后的参数都是选项参数;
如果 getopt 命令解析失败,则执行 usage 函数并返回错误码 1;
如果 getopt 命令解析成功,则将解析后的参数重新赋值给 $@,并使用 eval 命令重新执行解析后的命令行参数(这样可以将短参数和长参数转换成标准的命令行参数格式)。
最终,解析后的命令行参数会按照标准格式重新保存在 $1、$2、$3... 变量中,供后续的脚本使用。
相关问题
local ARGV=("$@") 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"
这段 Bash 脚本代码的作用是:
1. 将所有传递给脚本的参数存储在名为 ARGV 的本地数组变量中。
2. 使用 getopt 命令解析脚本的命令行选项和参数,并将其存储在名为 TEMP 的本地变量中。
3. 如果解析失败,则调用名为 usage 的函数并返回 1。
4. 使用 eval 命令重新设置命令行选项和参数,将它们存储在 "$@" 中。
具体来说:
1. `local ARGV=("$@")` 将所有传递给脚本的参数存储在名为 ARGV 的本地数组变量中。
2. `getopt -o "ndk:f:ha:s:" -l "native-build,debug,kernel:,firmware:,help,arch:,suite:" -n "$0" -- "$@"` 使用 getopt 命令解析脚本的命令行选项和参数,并将其存储在名为 TEMP 的本地变量中。其中,-o 表示短选项,-l 表示长选项,-n 表示脚本的名称(用于错误消息),-- 表示选项和参数的分隔符,"$@" 表示传递给脚本的所有参数。
3. 如果解析失败,则调用名为 usage 的函数并返回 1。这里的 `!` 表示如果 getopt 命令返回非零值,则执行下面的代码块。一般来说,如果 getopt 命令解析失败,它会输出错误消息并返回非零值。
4. `eval set -- "$TEMP"` 使用 eval 命令重新设置命令行选项和参数,将它们存储在 "$@" 中。这里使用 eval 命令是为了避免对命令行参数进行二次拆分,因为 getopt 命令返回的参数可能包含空格等特殊字符。
总之,这段代码的作用是解析命令行选项和参数,并将它们存储在本地变量中,以便后续处理。
local ARGV=("$@")
这是一个 Bash 脚本命令,它的作用是将所有传递给脚本的参数存储在名为 ARGV 的本地数组变量中。
具体来说,该命令使用 "$@" 选项获取所有传递给脚本的参数,并将它们存储在 ARGV 数组变量中。其中,local 关键字表示 ARGV 数组变量是一个本地变量,只在当前 Bash 脚本中有效。
例如,如果有一个名为 `test.sh` 的 Shell 脚本,可以通过以下方式来将所有传递给该脚本的参数存储在 ARGV 数组变量中:
```bash
#!/bin/bash
local ARGV=("$@") # 将所有传递给脚本的参数存储在 ARGV 数组变量中
echo "The first argument is: ${ARGV[0]}"
echo "The second argument is: ${ARGV[1]}"
echo "The third argument is: ${ARGV[2]}"
```
在该脚本中,使用 `local ARGV=("$@")` 将所有传递给脚本的参数存储在 ARGV 数组变量中。然后,使用 `${ARGV[0]}`、`${ARGV[1]}`、`${ARGV[2]}` 分别输出 ARGV 数组变量中的第 1、2、3 个元素,即第 1、2、3 个参数。
阅读全文