Bash for循环返回空停止程序?
我正在制作一个脚本,用于搜索文件并对它们进行计数。稍后,我将使用此计数值创建备份文件。这就是它看起来的样子:Bash for循环返回空停止程序?,bash,for-loop,int,Bash,For Loop,Int,我正在制作一个脚本,用于搜索文件并对它们进行计数。稍后,我将使用此计数值创建备份文件。这就是它看起来的样子: #!/bin/sh #LOCAL VAR PERFECTLY DEFINED if $estdifferent ; then x=0; for fic in `find $OTHERDIR/liste/ -type f -name "${filename}_bak*"` ; do { filename_t
#!/bin/sh
#LOCAL VAR PERFECTLY DEFINED
if $estdifferent ; then
x=0;
for fic in `find $OTHERDIR/liste/ -type f -name "${filename}_bak*"` ; do
{
filename_tab[x]=$fic
((x++))
}
echo "tableau rempli, nombre de fichier bak : "$x
此代码块在至少找到一个文件时有效,但在有0个文件时无效。
脚本未到达最后一个回显。调试模式在以下位置停止脚本:
echo differents
differents
true
x=0
find /tech/gtr/scripts/osm/scan-configs/liste/ -type f -name 'IDF-952584-S...
为什么?尝试更换:
for fic in `find $OTHERDIR/liste/ -type f -name $filename"_bak"*`;do
{
echo $fic
filename_tab[x]=$fic
((x++))
}
借
请?Debug说:++find/tech/gtr/scripts/osm/scan configs/liste/-type f-name find:“-name”缺少参数,但上面几行也说我的$filename变量不存在empty@user2564494这应该说明你的问题。并不是说find没有找到任何东西-模式中的*字符被shell看到并展开。尝试改用-name${filename}u bak*,因为引用可以防止全局扩展;但是,不管是否使用shopt-s nullglob,脚本都会在这个查找处停止。@user2564494那么,您可能想修复问题中发布的代码,因为它看起来肯定不是这样的……这是什么风格和版本的/bin/sh?这不是有效的bash语法。for循环看起来像for;做完成,而不是使用redhat的{…}block.bash4.1.21。找到文件时,此“for”语法有效:
for fic in `find $OTHERDIR/liste/ -type f -name $filename"_bak"*` ; do
echo $fic
filename_tab[x]=$fic
((x++))
done