gpt4 book ai didi

linux - 使用 getopts 传递给函数时,命令行参数不起作用

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:22:13 30 4
gpt4 key购买 nike

我一直在尝试使用 bash shell 脚本进行一些练习,但我一直无法使用 $1 变量来引用我的脚本的第一个参数。这是一个简单的脚本,它将文件作为参数并打印文件名。这是我的脚本:

#!/bin/bash

function practice() {
echo "${1}"
}

while getopts "h:" opt; do
case "$opt" in
h) practice
;;
esac
done

exit 0

我尝试了以下命令:

./practice.sh -h somefile.txt

出于某种原因,它返回一个空行。有什么想法吗?

最佳答案

函数中的

$1 是指传递给该函数的第一个位置参数,传递给您的脚本。

因此,您必须再次将您想要的参数传递给函数。您还告诉 getopts 您想要处理 -h 但随后您正在检查 case 中的 -a :

#!/bin/bash

practice() {
echo "${1}"
}

while getopts "h:" opt; do
case "$opt" in
h) practice "${OPTARG}"
;;
esac
done

关于linux - 使用 getopts 传递给函数时,命令行参数不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47674208/

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