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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.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
使用ksh和执行unixshell脚本/_Shell_Loops_Unix_File Processing - Fatal编程技术网

使用ksh和执行unixshell脚本/

使用ksh和执行unixshell脚本/,shell,loops,unix,file-processing,Shell,Loops,Unix,File Processing,我试图循环浏览目录中的一组文件,并对它们执行某些活动。当我使用ksh执行脚本时,它会按预期工作。但是当我用./执行它时,它失败了,错误地说了太多的参数。请帮帮忙。 脚本名称:Script1 使用ksh Script1 argument1执行时,它会按预期工作。 但当使用/Script1 argument1执行时,抛出的参数太多,则会出错 #!/bin/bash cd ../SrcFiles if [ -e *$1* ] then for file in *$1* do echo $file i

我试图循环浏览目录中的一组文件,并对它们执行某些活动。当我使用ksh执行脚本时,它会按预期工作。但是当我用./执行它时,它失败了,错误地说了太多的参数。请帮帮忙。

脚本名称:Script1

使用
ksh Script1 argument1
执行时,它会按预期工作。 但当使用
/Script1 argument1
执行时,抛出的参数太多,则会出错

#!/bin/bash
cd ../SrcFiles

if [ -e *$1* ]
then
for file in *$1*
do
echo $file
if [ $1 == "XXX" ]
then
echo $file >> ABC_"$1".txt
elif [ $1 == "YYY" ]
then
echo $file >>  ABC_"$1".txt
else
echo $file >>  ABC_"$1".txt
fi
done
else
#createadummyfile
fi
在这里:

-e
需要一个参数。glob扩展可能找到多个文件。如果要检查是否有任何文件匹配,请使用数组来保存全局扩展:

files=(~(N)*"$1"*)
if (( ${#files[@]} == 0)); then
    # no files found
else
    # do stuff to matching files
    for file in "${files[@]}"; do ...
fi

与ksh93配合使用。
~(N)
部分指示ksh,如果没有匹配的文件,则不要将模式保留为输出(类似于bash的
nullglob
选项)

哪个脚本?请提供代码。代码已添加@KellerspeicherAdd
设置-x
以调试代码。例如,参数扩展
*$1*
ksh
bash
中的工作方式可能不同。您可以将第一行更改为
#/bin/ksh
并运行/
files=(~(N)*"$1"*)
if (( ${#files[@]} == 0)); then
    # no files found
else
    # do stuff to matching files
    for file in "${files[@]}"; do ...
fi