我在以下目录/home/vs/vs_work2/Miss.Chim_DEPB
中有一堆.sv
文件,我想用上述目录中的每个文件名运行以下命令
make sim TB=depb/sim/utb/epb_uvm_tb.json TC= **USE_FILE_NAME_From_ABOVE_Directory**
并将运行后每个文件的结果与运行时使用的文件名一起保存到一个单独的文件中。
这就是我尝试过的
#!/bin/bash
FILES=/home/vs/vs_work2/Miss.Chim_DEPB/*.sv
NUM_OF_FILES= ls /home/vs/vs_work2/Miss.Chim_DEPB/*.sv | wc -l # this will lst number of files in that directory
declare -a vendec[NUM_OF_FILES] # declared array "-a" is used for index array
arraylength=${#vendec[@]}
for f in $FILES
do
#echo -n "" > vendec[*].txt #to empty file
vendec[i]
echo "$f" >> vendec.txt
done
您可以运行以下一个行:
ls /home/vs/vs_work2/Miss.Chim_DEPB/*.sv | xargs -I {} bash -c "make sim TB=depb/sim/utb/epb_uvm_tb.json TC={} && echo {} >> vendec.txt"
它将列出/home/vs/vs_work2/Miss.Chim_DEPB/
中的所有.sv
文件,然后,对于每个文件,它将运行make sim TB=depb/sim/utb/epb_uvm_tb.json TC={}
命令,并将{}
占位符替换为目录中的文件,如果成功,它将在vendec.txt
文件的末尾写入文件名。
请注意,可以使用xargs
的-P
选项并行运行多个make sim ....
命令。