基于Google's Style Guide,我制作了以下脚本。该脚本应采用a.txt
和b.txt
等文件,并将其更改为PREFIX_1_prefix_a.txt
和PREFIX_1_prefix_b.txt
。但是,当我输入:
$ sh rename_enum.sh -n 100 -P X -p Y
我希望X_100_Y_a.txt
和X_101_Y_b.txt
,但我得到_1_a.txt
和_2_b.txt
。谁能告诉我我做错了什么?
#!/bin/bash
#verbose='false'
nflag=1
Pflag=''
pflag='_'
files='*.txt'
while getopts 'nPpf' flag; do
case "${flag}" in
n) nflag="${OPTARG}" ;;
P) Pflag="${OPTARG}_" ;;
p) pflag="_${OPTARG}_" ;;
f) files="${OPTARG}" ;;
#v) verbose='true' ;;
*) error "Unexpected option ${flag}" ;;
esac
done
for i in ${files}
do
mv "$i" "${Pflag}${nflag}${pflag}$i"
nflag=$((nflag + 1))
done
答案 0 :(得分:1)
我发现this man page解释了如果一个标志有一个参数,那么 它后面应该是冒号。我所要做的只是换线......
while getopts 'nPpf' flag; do
...到......
while getopts 'n:P:p:f:' flag; do
......我得到了理想的结果。感谢您的评论!