Nul*_*ter 4 shell shell-script
我有一个命令将文件名作为变量,我将其作为名称模式给出,file_*_123.txt
Script.sh file_*_123.txt
Run Code Online (Sandbox Code Playgroud)
现在,如果有多个具有匹配模式的文件,则它仅对第一个文件执行,我希望为每个与名称模式匹配的文件执行此脚本。例如
file_1_123.txt, file_2_123.txt, file_3_123.txt
某种 for 循环。但是,由于文件的数量可以是 1 或大于 1,所以不确定如何迭代。
任何人都可以建议一个解决方案吗?
这将涉及在循环中调用脚本,或者安排脚本循环遍历其命令行参数。
for filename in file_*_123.txt; do
./Script.sh "$filename"
done
Run Code Online (Sandbox Code Playgroud)
这将为每个与模式匹配的文件调用一次脚本file_*_123.txt。
您可以修改脚本并将其主体包装在循环中,例如
#!/bin/sh
for filename do
# here you do whatever you need to do with "$filename"
done
Run Code Online (Sandbox Code Playgroud)
或者,
#!/bin/sh
for filename in "$@"; do
# here you do whatever you need to do with "$filename"
done
Run Code Online (Sandbox Code Playgroud)
(循环的这两种变体是等效的)
这将导致脚本循环遍历其命令行参数。然后,您将按照问题中所示运行脚本:
./Script.sh file_*_123.txt
Run Code Online (Sandbox Code Playgroud)