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