#!/usr/bin/env bash
set -e #这句语句告诉bash如果任何语句的执行结果不是true则应该退出。 # 这样的好处是防止错误像滚雪球般变大导致一个致命的错误,而这些错误本应该在之前就被处理掉
#sh usign.sh ./Data
#打印参数1,输出./Data printf "%s\n" $1
#[ -z "$1" ] 如果第一个参数不存在(-z 字符串长度为0 ) #由系统提供的参数称为位置参数。位置参数的值可以用$N得到 # 如$0表示程序的名字,$1表示传递给程序的第一个参数
# 如果变量$1为空,则进入if语句 表明运行.sh文件必须输入参数 #如果终端命令:sh usign.sh 会报错,会输出echo语句 if [ -z "$1" ]; then echo "usage download_and_preproces_mscoco.sh [data dir]" #echo是输出命令 exit fi #fi为if语句的结束,相当于end if
printf "%s\n" $(uname) #输出 Linux
#$(uname) 输出系统内核,若是Linux,解压命令为unzip -np #处理解压命令 if [ "$(uname)" == "Darwin" ]; then UNZIP="tar -xf" else UNZIP="unzip -nq" fi
# Create the output directories. #创建字符串,在第一个参数之后添加/ OUTPUT_DIR="${1%/}" SCRATCH_DIR="${OUTPUT_DIR}/raw-data"
eval echo '$'OUTPUT_DIR #输出./Data eval echo '$'SCRATCH_DIR #输出./Data/raw-data
#生成文件夹 mkdir -p "${OUTPUT_DIR}" #./Data 创建Data目录 mkdir -p "${SCRATCH_DIR}" #./Data/raw-data 创建Data/raw-data目录
#当前路径 /home/dms/PycharmProjects/bash_using CURRENT_DIR=$(pwd) eval echo '$'CURRENT_DIR #输出字符串变量的值
WORK_DIR="$0.runfiles/im2txt/im2txt" eval echo '$'WORK_DIR #/home/dms/PycharmProjects/bash_using/usign.sh.runfiles/im2txt/im2txt BUILD_SCRIPT="${WORK_DIR}/build_mscoco_data" eval echo '$'BUILD_SCRIPT #/home/dms/PycharmProjects/bash_using/usign.sh.runfiles/im2txt/im2txt/build_mscoco_data
exit
# Helper function to download and unpack a .zip file. function download_and_unzip() { #下载地址 local BASE_URL=${1} #下载的文件地址 eval echo '$'BASE_URL #要下载的文件名 local FILENAME=${2} eval echo '$'FILENAME
#-f filename 如果 filename为常规文件,则为真 #if [ ! 表达式 ] 条件表达式的相反 #非常规文件,进行if语句。 if [ ! -f ${FILENAME} ]; then
echo "Downloading ${FILENAME} to $(pwd)" #下载数据 wget -nd -c "${BASE_URL}/${FILENAME}" else echo "Skipping download of ${FILENAME}" fi
#解压操作 echo "Unzipping ${FILENAME}" ${UNZIP} ${FILENAME} }
#进入Data/raw-data目录 cd ${SCRATCH_DIR}
# Download the images. #下载网址 BASE_IMAGE_URL="http://msvocds.blob.core./coco2014"
#文件名 TRAIN_IMAGE_FILE="train2014.zip" download_and_unzip ${BASE_IMAGE_URL} ${TRAIN_IMAGE_FILE} TRAIN_IMAGE_DIR="${SCRATCH_DIR}/train2014"
#输出训练图像的路径 eval echo '$'TRAIN_IMAGE_DIR #输出字符串变量的值
# Download the captions. #下载网址 BASE_CAPTIONS_URL="http://msvocds.blob.core./annotations-1-0-3" #文件名 CAPTIONS_FILE="captions_train-val2014.zip" download_and_unzip ${BASE_CAPTIONS_URL} ${CAPTIONS_FILE} #拼接字符串 TRAIN_CAPTIONS_FILE="${SCRATCH_DIR}/annotations/captions_train2014.json" VAL_CAPTIONS_FILE="${SCRATCH_DIR}/annotations/captions_val2014.json"
eval echo '$'TRAIN_CAPTIONS_FILE eval echo '$'VAL_CAPTIONS_FILE
# Build TFRecords of the image data. cd "${CURRENT_DIR}" BUILD_SCRIPT="${WORK_DIR}/build_mscoco_data"
#执行脚本文件 "${BUILD_SCRIPT}" \ --train_image_dir="${TRAIN_IMAGE_DIR}" \ --val_image_dir="${VAL_IMAGE_DIR}" \ --train_captions_file="${TRAIN_CAPTIONS_FILE}" \ --val_captions_file="${VAL_CAPTIONS_FILE}" \ --output_dir="${OUTPUT_DIR}" \ --word_counts_output_file="${OUTPUT_DIR}/word_counts.txt" \
|