在unix的case语句中使用通配符的问题?

时间:2009-08-31 07:30:15

标签: unix

in localpath i have files with names 
myfile1_20090821.dat
myfile2_20090831.dat
myfile3_20090811.dat
myfile4_20090822.dat
myfile5_20090825.dat
type="OP"
module="abc"
if [ $type == 'OP' ]; then
case $module in
abc) x=1
     while [ $x -le 5 ]
     do
     INPUT_FILE[$x]=`ls localpath/myfile$x*.dat`
     x=$(( $x + 1 ))
     done;;
*) echo "not.......";;
esac
fi

给出错误:ls localpath / myfile $ 1 * .dat not found

请帮帮我

2 个答案:

答案 0 :(得分:1)

基本脚本看起来有效,但是,只有从“localpath”的父目录运行它才会起作用

即。如果你从运行脚本的目录中执行'ls',你应该看到列出的localpath目录。

尝试完全限定目录。

答案 1 :(得分:0)

我的程序版本:

#!/usr/bin/bash

type="OP"
module="abc"
if [ $type == 'OP' ]; then
case $module in
abc) x=1
     while [ $x -le 5 ]
     do
     INPUT_FILE[$x]=`ls localpath/myfile$x*.dat`
     x=$(( $x + 1 ))
     done;;
*) echo "not.......";;
esac
fi

不提供任何错误消息。你的版本中有一个shebang系列吗?

实际上,我的工作也没有shebang。我正在使用Cygwin。