Shell脚本

请赐教。 shell脚本的以下代码段是什么意思?

FNAME=Grapes.txt touch Apple.txt ls Banana.txt | while read FNAME do /somePath/ftp_autojobs.sh someFolder/LG $FNAME Apple.txt done 

编辑 :ftp_autojobs.sh传输文件到服务器。

ftp_autojobs.sh的内容:

 SO=`tput smso` SE=`tput rmso` RETURN="$SO RETURN $SE" TEMP_FN=`mktemp -c -d . -p ftp` TEMP_LOG=`mktemp -c -d . -p log` echo open some.server.com>>$TEMP_FN echo user user pass>>$TEMP_FN echo cd \"$1\">>$TEMP_FN echo binary>>$TEMP_FN shift until [ $# -eq 0 ] do echo mput \"$1\">>$TEMP_FN shift done echo bye>>$TEMP_FN ftp -vin < $TEMP_FN > $TEMP_LOG FILE_COUNT=`grep "226 Transfer complete" $TEMP_LOG|eval wc -l|cut -d ' ' -f 1` if [ $FILE_COUNT -eq 0 ] then rm -f ftp_commands.txt 2>/dev/null rm -f ftp.log 2>/dev/null mv $TEMP_FN ftp_commands.txt mv $TEMP_LOG ftp.log cat ftp.log banner "WARNING" "FTP FAILED" else rm -f $TEMP_FN rm -f $TEMP_LOG echo $FILE_COUNT Files sucessfully transferred. fi 

非常感谢你。

在简单的格式….

将FNAME设置为Grapes.txt

创buildApple.txt

然后是ftp_autojobs.sh someFolder / LG Grapes.txt Apple.txt

完成

没有比这更多….

  • 它更新Apple.txt上的时间戳(或创build它,如果它不存在)
  • 如果Banana.txt存在并且是一个文件,则使用Banana.txt代替$ FNAME运行while循环
  • 如果Banana.txt存在并且是一个目录,那么对于Banana.txt /中的每个项目,将运行ftp_autojobs.sh语句,其中项目的文件名代替$ FNAME

我的猜测是,它正在备份一些文件到FTP服务器。 有一些“魔术”的东西,我们不知道这个剧本。 看起来“Apples.txt”文件是某种日志。

最大的秘密是ftp_autojob.sh脚本的内容和参数。 也许你可以在你的问题上添加一些信息。

顺便说一下,我不认为这是写得那么好,看看这是为什么。 考虑以下内容:

  while read FNAME do /somePath/ftp_autojobs.sh someFolder/LG "$FNAME" Apple.txt done < Banana.txt