[英]Executing a unix shell script with ksh and ./
我试图遍历目录中的一组文件并对其进行某些活动。 当我用ksh执行脚本时,它按预期工作。 但是当我用./执行它时,它失败并显示错误的错误,说了太多的参数。 请帮忙。
ScriptName:Script1
当执行带有ksh Script1 argument1
exec时,它可以按预期工作。 但是,当使用./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
这里:
if [ -e *$1* ]
-e
需要一个参数。 全局扩展可能会找到多个文件。 如果要检查是否有任何匹配的文件,请使用数组保存全局扩展:
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
选项)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.