根据unix"查找"将文件计数结果转换为变量。命令

时间:2016-10-11 00:23:41

标签: linux unix

我使用以下命令将文件计数结果基于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

1 个答案:

答案 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”