gpt4 book ai didi

string - 解析命令行参数以处理 bash 中的文件列表?

转载 作者:行者123 更新时间:2023-11-29 09:47:15 25 4
gpt4 key购买 nike

我想创建一个脚本,其中包含一些解析的可选输入,类似于 this respone解释但还包含具有特定扩展名的文件列表。示例用法是

./myscript.sh -s 25 -q 0.2 *.txt

然后脚本会将 25 存储到 s 变量中,将 0.2 存储到 q 变量中,然后将单独处理所有 txt 文件的列表。这是我目前所拥有的

#!/bin/bash -f

# set the default values
QMAX=0.2
PROFILESIZE=50

while [[ $# > 0 ]]
do
key="$1"
case $key in
-q|--max_q)
QMAX="$2"
shift # past argument
;;
-s|--profile_size)
PROFILESIZE="$2"
shift # past argument
;;
esac
shift # past argument or value
done

for var in "$@"
do
if [[ $var == *".txt" ]]
then
# do something on for real on each file here
echo $QMAX $PROFILESIZE $var
fi
done

照原样,我可以通过注释掉 while 循环来使用默认值运行。在不注释掉它的情况下,它会通读所有输入,并且没有留下供 for 循环比较的输入。我认为最好的选择是在 while 循环中创建一个文件列表,然后在 for 循环中使用它。关于我将如何做到这一点有什么想法吗?

最佳答案

只需附加一个将参数存储到数组的 *) 即可。

*) files+=("$1") ;;

然后遍历文件而不是 $@:

for file in "${files[@]}" ; do

关于string - 解析命令行参数以处理 bash 中的文件列表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30535035/

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