我的脚本:
#!/bin/bash
for file in *.ats;
do
if [[ ("${file}" = THx) || ("${file}" = THy)]]
then cp $file /home/milenko/procmt
fi
done
目录中的文件
262_V01_C00_R000_TEx_BL_128H.ats
262_V01_C01_R000_TEy_BL_128H.ats
262_V01_C02_R000_THx_BL_128H.ats
262_V01_C03_R000_THy_BL_128H.ats
我想要的是复制包含THx 或THy 的文件,但文件没有被复制。 为什么?
最佳答案
我认为你可以在这里完全避免循环:
cp *TH[xy]*.ats /home/milenko/procmt
无需循环遍历结果然后进行单独比较;单个 glob 将扩展为您想要的文件列表。
您原来的方法有几个问题:
- 首先,您尝试测试完全匹配,因此条件永远不会为真。
- 另外,注意空格:
]]
是复合命令[[
中的关键字,所以它需要是一个单独的词(即被空格包围) .
关于bash - 我的 shell 脚本中的逻辑或,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39274067/