Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/shell/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
一次处理多个文件的bash脚本_Bash_Shell_Loops - Fatal编程技术网

一次处理多个文件的bash脚本

一次处理多个文件的bash脚本,bash,shell,loops,Bash,Shell,Loops,我在一个文件夹中有多个扩展名的文件,如.txt、.update、.text。文件名如下 out1.txt, out1.text, out1.update out2.txt, out2.text, out2.update 以此类推……我的命令如下所示: ./script.pl out1.txt out1.text out1.update 我想把这个命令放在每个文件的循环中。我尝试使用如下循环: for i in *.{txt,text,update} 但是它使用了包括扩展名在内的全名,所以我不

我在一个文件夹中有多个扩展名的文件,如.txt、.update、.text。文件名如下

out1.txt, out1.text, out1.update

out2.txt, out2.text, out2.update

以此类推……我的命令如下所示:

./script.pl out1.txt out1.text out1.update
我想把这个命令放在每个文件的循环中。我尝试使用如下循环:

for i in *.{txt,text,update}
但是它使用了包括扩展名在内的全名,所以我不知道如何在命令中推断特定的扩展名文件

谢谢

ext=$(awk-F\.{print.“$NF}”您可以使用:

ext=$(awk -F\. '{ print "."$NF }' <<< $i)
fil=$(basename -s $ext $i)
for f in *.txt;
do
    b=${f%.txt} # the trick is there
    ./script.pl $b.txt $b.text $b.update
done

可能是重复的我检查了它,但它是不同的。它给出了一个错误,没有找到“b”命令。我通过多次测试,但它给出了一个错误。它工作了。我在变量“b”和等号“=”之间有空格。我删除了它,然后它工作得很好。谢谢!@AsmaTahir,的确,bash对“=”前后的空格很敏感。是的,我后来注意到了空格,这就是我删除它的原因。再次感谢!