在 cygwin bash 脚本中查找语句
find statement in cygwin bash script
for i in `find . -type f -name "VF-Outlet*.edi" -exec basename \{} \;` ; do
if [ -n "${i}" ];
then
echo file "VF-Outlet found";
sed -e 's/\*UK\*00/\*UP\*/g;s/XQ.*$/XQ\*H\*20150104\*20150110/g' $i > ${i}_fix
else
echo file "VF-Outlet" not found;
fi
done
如果找到文件,以上代码有效。 'echo' 语句打印找到的文件。
但是,如果找不到该文件,则不会打印任何内容。我尝试了所有针对空字符串和未设置变量的各种测试,但没有任何效果。
另外,如果我尝试:
i=`find . -type f -name "VF-Outlet*.edi" -exec basename \{} \;`;
然后做测试:
if [ -n "${i}" ];
then
echo file ${i} found;
else
echo file "VF-Outlet" not found;
fi
done
无论是否找到文件,它都能正常工作。
需要帮助来解决这个问题。我需要 for 循环来测试多个文件。
它不起作用的原因是 "for" 没有将空值作为变量 "i"
的输入
例如:
我在echo > /dev/null
;回声嗨;完成
上述命令不会给出任何结果,因为在 运行 循环中没有为值 $i 赋值。
在这里提到的情况下,如果我们在调试模式下检查脚本,我们可以看到脚本在初始变量分配时终止。
# sh -x script.sh
+ 寻找。 -type f -name VF-Outlet*.edi -exec basename {} ;
此处,script.sh 文件包含您提供的脚本。
如果目录中存在文件,脚本将成功执行。
# sh -x tet
+ find . -type f -name VF-Outlet*.edi -exec basename {} ;
+ [ -n VF-Outlet1.edi ]
+ echo file VF-Outlet found
file VF-Outlet found
正如@shellter 提到的,这不是我会做的。您可以使用 -f 而不是 -n 来检查文件是否存在。
希望对您有所帮助!
for i in `find . -type f -name "VF-Outlet*.edi" -exec basename \{} \;` ; do
if [ -n "${i}" ];
then
echo file "VF-Outlet found";
sed -e 's/\*UK\*00/\*UP\*/g;s/XQ.*$/XQ\*H\*20150104\*20150110/g' $i > ${i}_fix
else
echo file "VF-Outlet" not found;
fi
done
如果找到文件,以上代码有效。 'echo' 语句打印找到的文件。 但是,如果找不到该文件,则不会打印任何内容。我尝试了所有针对空字符串和未设置变量的各种测试,但没有任何效果。 另外,如果我尝试:
i=`find . -type f -name "VF-Outlet*.edi" -exec basename \{} \;`;
然后做测试:
if [ -n "${i}" ];
then
echo file ${i} found;
else
echo file "VF-Outlet" not found;
fi
done
无论是否找到文件,它都能正常工作。
需要帮助来解决这个问题。我需要 for 循环来测试多个文件。
它不起作用的原因是 "for" 没有将空值作为变量 "i"
的输入例如:
我在echo > /dev/null
;回声嗨;完成
上述命令不会给出任何结果,因为在 运行 循环中没有为值 $i 赋值。
在这里提到的情况下,如果我们在调试模式下检查脚本,我们可以看到脚本在初始变量分配时终止。
# sh -x script.sh + 寻找。 -type f -name VF-Outlet*.edi -exec basename {} ;
此处,script.sh 文件包含您提供的脚本。
如果目录中存在文件,脚本将成功执行。
# sh -x tet
+ find . -type f -name VF-Outlet*.edi -exec basename {} ;
+ [ -n VF-Outlet1.edi ]
+ echo file VF-Outlet found
file VF-Outlet found
正如@shellter 提到的,这不是我会做的。您可以使用 -f 而不是 -n 来检查文件是否存在。
希望对您有所帮助!