gpt4 book ai didi

bash - 有人可以用简单的英语解释这个简短的 getopts bash 脚本吗? (UNIX)

转载 作者:行者123 更新时间:2023-12-04 04:52:50 26 4
gpt4 key购买 nike

这是脚本:

file=$1
while getopts ":ivr" opt; do
case $opt in
i) iopt=1;;
v) vopt=1;;
r) ropt=1;;
\?)echo "invalid option: -$OPTARG" >
esac
done
shift $(($OPTIND-1))

所以我真正理解的唯一部分是类次 $(($OPTIND-1)) .有人能解释一下其他人实际上在做什么吗?什么意思 file=$1在顶部?这是否意味着"file"一词现在已分配给 $1 的值?专栏?

“$1 列”是指当运行命令时, $0分配给命令的实际名称, $1是给出的第二个选项/参数,和 $2是给出的第三个选项/参数。例如,如果您键入:
rm -r directory/randomfiles

然后 $0将是 rm。 -r将是 $1 .和 directory/randomfiles将是 $2 .这有意义吗?

总结一下:
  • file=$1 是什么?在顶部的意思是,它的重点是什么?
  • $opt 是什么?代表什么,是什么意思?
  • iopt=1 是什么?意思是,还有什么意义呢?
  • 如果我想像这样使用我的脚本:MyScriptName -r [InsertFilenameHere]我该怎么办?

  • 我知道我问了一吨——如果你能回答我的一些问题,或者给我指明正确的方向,我将不胜感激!

    提前致谢。

    最佳答案

    您的命令最多可以使用 3 个命令行选项,-i , -r , -v . getopts 命令在循环中执行以解析选项。 getopts 命令使用 opt保存当前选项字符的变量。在 case 命令中设置了一些变量来记住为脚本提供了哪些选项。

    您对 $1 的使用是正确的,但通常在选项移动之前您不会提取位置参数。

    待办MyScriptName -r [InsertFilenameHere] ,你会这样做:

    #!/bin/bash
    ropt=0
    while getopts :r opt; do
    case $opt in
    r) ropt=1;;
    ?) echo "illegal option: -$OPTARG"; exit 1;;
    esac
    done
    shift $((OPTIND-1))
    file=$1
    if [[ $ropt == 0 ]]; then
    echo "error: you did not specify '-r'"
    exit 1
    fi
    : do something with $file

    关于bash - 有人可以用简单的英语解释这个简短的 getopts bash 脚本吗? (UNIX),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17178339/

    26 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com