我正在尝试编写一个对选定文件进行操作的脚本。
#!/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
这是为模式 *.JPG 找到的最后一个文件,并且仅处理该文件。我需要命令行上给出的实际文件模式。提前致谢。
您无法获得实际的模式:shell 在启动脚本之前已经对其进行了扩展。您确实获得了实际文件作为参数,因此您应该做的是迭代所有参数:
#!/bin/bash
echo "operating on $# files"
for file; do
# do something with each "$file"
done
您所做的是将 lastArgNo 设置为参数的数量,使用间接变量扩展将 sPattern 设置为最后一个参数的值。如果你这样做了arg=1; sPattern=${!arg}
您可以将 sPattern 设置为第一个参数。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)