防止bash脚本中的globbing

时间:2015-03-03 14:07:30

标签: bash file parameters glob

我正在尝试编写一个可以对所选文件进行操作的脚本。

#!/bin/bash
#ytest
lastArgNo=$#
sPattern=${!lastArgNo}
echo "operating on $sPattern"
#do operation on $sPattern
for sFile in $sPattern do
    #do something with each file
done

如果我用这个脚本开始 参数* .JPG我得到了

operating on IMG_1282.JPG

这是找到pattern * .JPG的最后一个文件,只处理此文件。我需要在命令行上给出的实际文件模式。提前谢谢。

1 个答案:

答案 0 :(得分:1)

您无法获得实际模式:shell在启动脚本之前已经扩展了它。你确实得到了实际的文件作为参数,所以你应该做的是迭代所有的参数:

#!/bin/bash
echo "operating on $# files"
for file; do
    # do something with each "$file"
done

您正在做的是将lastArgNo设置为args的数量,使用间接变量扩展将sPattern设置为最后一个参数的值。如果你做arg=1; sPattern=${!arg},你会将sPattern设置为第一个参数。