为什么脚本无法识别文件扩展名?

时间:2016-08-09 17:52:07

标签: linux bash shell

我的剧本

#!/bin/bash

cp *.ats /home/milenko/procmt

mycd() {
  cd /home/milenko/procmt
}

mycd

EXT=ats
for i in *; do
    if [ "${i}" != "${i%.${EXT}}" ];then
        ./tsmp -ascii i
    fi
done

但是

milenko@milenko-HP-Compaq-6830s:~/Serra do Mel/MT06/meas_2016-07-13_20-22-00$ bash k1.sh


./tsmp: handling 1 files ************************************** total input channels: 1
the name of your file does not end with ats ... might crash soon

main (no rda) -> can not open i for input, exit


./tsmp: handling 1 files ************************************** total input channels: 1
the name of your file does not end with ats ... might crash soon

main (no rda) -> can not open i for input, exit

当我转到procmt目录和列表文件时

milenko@milenko-HP-Compaq-6830s:~/procmt$ ls *.ats
262_V01_C00_R000_TEx_BL_2048H.ats  262_V01_C00_R086_TEx_BL_4096H.ats  262_V01_C02_R000_THx_BL_2048H.ats
262_V01_C00_R000_TEx_BL_4096H.ats  262_V01_C01_R000_TEy_BL_2048H.ats  262_V01_C03_R000_THy_BL_2048H.ats

我的剧本出了什么问题?

1 个答案:

答案 0 :(得分:5)

如果我理解正确,这对您有用:

dest='/home/milenko/procmt'

cp *.ats "$dest"

cd "$dest"

for i in *.ats; do
     ./tsmp -ascii "$i"
done

当您只对.ats文件感兴趣时,无需遍历所有文件。您的mycd功能正在执行cd,因此您也可以避免这种情况。