我使用以下命令将文件计数结果基于unix"查找"命令: 标准:今天创建的文件数量,带有扩展名" tab"和大小大于0 命令:
num_files_nz=$(find $src_file_path -type f -mtime 0 -name "*.tab" -size +0c | wc -l)
echo "Count of non-0KB files=${num_files_nz}"
此命令正常工作并返回" 4"从命令提示符(这是正确的),但当我在shell脚本中使用相同的命令和目录路径时,计数返回为" 0"。
我尝试输入$src_file_path
中的目录,然后使用"。"而不是将$src_file_path
直接放在命令中。
我引用了引号来包含整个$(find ...)
表达式。
但是没有任何作用,它在shell脚本中使用时总是返回0计数。
如果有人能帮我解决这个问题,我真的很感激。
以下是剧本:
#export path=/newitest/u01/app/itestcomn/admin/out/itest_eca1db11
#!/usr/bin/ --
request_id=$5
hostname=$6
username=$7
password=$8
email_to=${9}
org_code=${10}
dest_file_path="/$org_code"
RETCODE=0
echo "Main Request ID=$request_id"
echo "hostname=$hostname"
echo "username=$username"
echo "password=$password"
echo "email_to=$email_to"
echo "dest_file_path=$dest_file_path"
echo "org_code=$org_code"
cd $XXKE_TOP/../../keedi/11.5.0/outbound/"$org_code"
src_file_path="$(pwd)"
ls -l
echo "src_file_path=$src_file_path"
#number of files created today, with extension "tab" and size greater than 0
num_files_nz=$(find $src_file_path -type f -mtime 0 -name "*.tab" -size +0c | wc -l)
echo "Count of non-0KB files=${num_files_nz}"
#number of files created today, with name "StockTransfer_Oracle.tab" and size equals 0
num_files_z=$(find $src_file_path -type f -mtime 0 -name "StockTransfer_Oracle.tab" -size 0c | wc -l)
echo "Count of 0KB files=${num_files_z}"
#total file count
num_tot_files=$(expr "$num_files_nz" + "$num_files_z")
echo "Total file count=${num_tot_files}"
if [ "$num_tot_files" -eq 14 ];
then
echo "FTP Start"
ftp -v -n $hostname <<EOF
quote USER $username
quote PASS $password
cd /
cd $dest_file_path
pwd
prompt off
mput *.tab
bye
EOF
else
echo "ERROR GENERATING EXTRACTS"
#Extract files with zero size other than the file "StockTransfer_Oracle.tab"
err_files="$(find $src_file_path -type f -mtime 0 -name "*.tab" ! -name "StockTransfer_Oracle.tab" -size 0c)"
echo "Error Ertracts"
echo "${err_files}"
msg_body="Following $org_code extracts were not completely generated:\n\n$err_files"
echo ${msg_body} | mailx -s "ERROR: Extract File Generation" ${email_to}
fi
我正在通过&#34; cd&#34;进入源目录。第18行中的命令,我使用与变量$ src_file_path中的值相同的路径,当我使用&#34;时,应该访问相同的路径。&#34;在find语句中。 我将探索绝对路径,但请尽可能发送一些示例以及可能有助于使shell脚本工作的任何其他建议。
当我创建一个&#34; .sh&#34;文件并从命令提示符执行它,find命令工作并返回正确的计数但是当我将它转换为&#34; .prog&#34;并使用并发程序运行它,该命令返回零计数
由于 Anir
答案 0 :(得分:0)
这行不通。
cd $ XXKE_TOP /../../ keedi / 11.5.0 / outbound /“ $ org_code” src_file_path =“ $(pwd)”
相反,我建议您声明如下,并且应将其修复:
export src_file_path = $ XXKE_TOP /../../ keedi / 11.5.0 / outbound /“ $ org_code”