#!/usr/bin/env bash
set -e #這句語句告訴bash如果任何語句的執(zhí)行結(jié)果不是true則應(yīng)該退出。 # 這樣的好處是防止錯誤像滾雪球般變大導致一個致命的錯誤,而這些錯誤本應(yīng)該在之前就被處理掉
#sh usign.sh ./Data
#打印參數(shù)1,輸出./Data printf "%s\n" $1
#[ -z "$1" ] 如果第一個參數(shù)不存在(-z 字符串長度為0 ) #由系統(tǒng)提供的參數(shù)稱為位置參數(shù)。位置參數(shù)的值可以用$N得到 # 如$0表示程序的名字,$1表示傳遞給程序的第一個參數(shù)
# 如果變量$1為空,則進入if語句 表明運行.sh文件必須輸入?yún)?shù) #如果終端命令:sh usign.sh 會報錯,會輸出echo語句 if [ -z "$1" ]; then echo "usage download_and_preproces_mscoco.sh [data dir]" #echo是輸出命令 exit fi #fi為if語句的結(jié)束,相當于end if
printf "%s\n" $(uname) #輸出 Linux
#$(uname) 輸出系統(tǒng)內(nèi)核,若是Linux,解壓命令為unzip -np #處理解壓命令 if [ "$(uname)" == "Darwin" ]; then UNZIP="tar -xf" else UNZIP="unzip -nq" fi
# Create the output directories. #創(chuàng)建字符串,在第一個參數(shù)之后添加/ 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 創(chuàng)建Data目錄 mkdir -p "${SCRATCH_DIR}" #./Data/raw-data 創(chuàng)建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為常規(guī)文件,則為真 #if [ ! 表達式 ] 條件表達式的相反 #非常規(guī)文件,進行if語句。 if [ ! -f ${FILENAME} ]; then
echo "Downloading ${FILENAME} to $(pwd)" #下載數(shù)據(jù) 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. #下載網(wǎng)址 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. #下載網(wǎng)址 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"
#執(zhí)行腳本文件 "${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" \
|