【发布时间】:2015-08-12 15:24:46
【问题描述】:
我想创建一个脚本,其中包含一些可选输入,其解析方式类似于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 循环中使用它。关于我将如何做到这一点的任何想法?
【问题讨论】: