# Need a Shell Script for FTP

**URL:** <https://community.unix.com/t/need-a-shell-script-for-ftp/348181>\
**Category:** Shell Programming and Scripting\
**Created:** [November 17, 2014, 9:58am UTC](https://community.unix.com/t/need-a-shell-script-for-ftp/348181 "2014-11-17T09:58:47Z")\
**Posts on this page:** 15\
**Page:** 2

<div class="post-metadata">

**Author:** ![Corona688](https://community.unix.com/letter_avatar/corona688/32/5_5575768a8748004e209b776fc1b2916d.png) [@Corona688](https://community.unix.com/u/Corona688)\
**Post date:** [November 18, 2014, 2:04pm UTC](https://community.unix.com/t/need-a-shell-script-for-ftp/348181/22 "2014-11-18T14:04:41Z")

</div>

Note that it does not copy the new files into /tmp, just downloads and checks them. I don't want to accidentally wreck your data with code I have no way to test.

---

<div class="post-metadata">

**Author:** ![maruf](https://community.unix.com/letter_avatar/maruf/32/5_5575768a8748004e209b776fc1b2916d.png) [@maruf](https://community.unix.com/u/maruf)\
**Post date:** [November 19, 2014, 11:15am UTC](https://community.unix.com/t/need-a-shell-script-for-ftp/348181/23 "2014-11-19T11:15:03Z")

</div>

I ran below

```nohighlight
  HOST=''
  ftpuser=''
  ftppass=''
  FILE='XXXX.YYMMDD'
  NOW=$(date +"%m-%d-%Y")
if ! mkdir /tmp/$$
then
        echo "Couldn't create /tmp/$$" >&2
        exit 1
fi

echo "Storing into /tmp/$$" >&2

SrcDir='G:\KKKK'
DstDi='/tmp/'

trap "rm -Rf /tmp/$$" EXIT # Clean up temp folder when the script quits by any means

# Check if you can connect.
ftp -nvd $HOST <<EOF
quote user $ftpuser
quote pass $ftppass
hash
prompt off
cd $SrcDir
ls
EOF

if ["$?" -ne 0]
then
        echo "Couldn't connect" >&2
        exit
fi

# Get the remote file
ftp -nvd $HOST << EOF >/tmp/ftp.$NOW.log
quote USER $ftpuser 
quote PASS $ftppass
hash
prompt off
cd $SrcDir
lcd /tmp/$$
bin
mget $FILE
bye
EOF

if ["$?" -ne 0]
then
        echo "Couldn't retrieve $FILE" >&2
        exit
fi

OLDIFS="$IFS" # Special IFS variable controls splitting of unquoted variables
IFS="/"

for FILE in /tmp/$$/*
do
        if [! -f "$FILE"]
        then
                echo "No files retrieved" >&2
                exit 1
        fi

        set -- $FILE # Splits /path/to/file into $1="", $2="path", $3="to", $4="file"
        shift $(( $# - 1 )) # $1="file", all the rest disappears

        if ["$(wc -c < "${DstDi}/$1")" -ne "$(wc -c < "/tmp/$$/$1")"]
        then
                echo "Sizes of original and new file differ" >&2
                exit
        fi
done

IFS="$OLDIFS"

```

.................................................  
after run

```nohighlight
./ftp1.sh: line 44: warning: here-document at line delimited by end-of-file (wanted `EOF')
./ftp1.sh: line 45: syntax error: unexpected end of file

```

---

<div class="post-metadata">

**Author:** ![Corona688](https://community.unix.com/letter_avatar/corona688/32/5_5575768a8748004e209b776fc1b2916d.png) [@Corona688](https://community.unix.com/u/Corona688)\
**Post date:** [November 19, 2014, 11:18am UTC](https://community.unix.com/t/need-a-shell-script-for-ftp/348181/24 "2014-11-19T11:18:24Z")

</div>

You changed an `<<EOF` into an `<< EOF` , try removing the space.

---

<div class="post-metadata">

**Author:** ![maruf](https://community.unix.com/letter_avatar/maruf/32/5_5575768a8748004e209b776fc1b2916d.png) [@maruf](https://community.unix.com/u/maruf)\
**Post date:** [November 19, 2014, 2:12pm UTC](https://community.unix.com/t/need-a-shell-script-for-ftp/348181/25 "2014-11-19T14:12:19Z")

</div>

Now the Code look like below

```nohighlight
exec >>/tmp/log
exec 2>&1  
  HOST=''
  ftpuser=''
  ftppass=''
  NOW=$(date +"%m-%d-%Y")
if ! mkdir /tmp/$$
then
        echo "Couldn't create /tmp/$$" >&2
        exit 1
fi

echo "Storing into /tmp/$$" >&2

SrcDir="FTP"
DstDi='/tmp/'

trap "rm -Rf /tmp/$$" EXIT # Clean up temp folder when the script quits by any means

# Check if you can connect.
ftp -nvd $HOST <<EOF
quote user $ftpuser
quote pass $ftppass
hash
prompt off
ls
EOF

if ["$?" -ne 0]
then
        echo "Couldn't connect" >&2
        exit
fi

# Get the remote file
ftp -nvd $HOST <<EOF
quote USER $ftpuser 
quote PASS $ftppass
hash
prompt off
lcd /tmp/$$
bin
mget $FILE
bye
EOF

if ["$?" -ne 0]
then
        echo "Couldn't retrieve $FILE" >&2
        exit
fi

OLDIFS="$IFS" # Special IFS variable controls splitting of unquoted variables
IFS="/"

for FILE in /tmp/$$/*
do
        if [! -f "$FILE"]
        then
                echo "No files retrieved" >&2
                exit 1
        fi

        set -- $FILE # Splits /path/to/file into $1="", $2="path", $3="to", $4="file"
        shift $(( $# - 1 )) # $1="file", all the rest disappears

        if ["$(wc -c < "${DstDi}/$1")" -ne "$(wc -c < "/tmp/$$/$1")"]
        then
                echo "Sizes of original and new file differ" >&2
                exit
        fi
done

IFS="$OLDIFS"

```

---

<div class="post-metadata">

**Author:** ![Corona688](https://community.unix.com/letter_avatar/corona688/32/5_5575768a8748004e209b776fc1b2916d.png) [@Corona688](https://community.unix.com/u/Corona688)\
**Post date:** [November 19, 2014, 2:15pm UTC](https://community.unix.com/t/need-a-shell-script-for-ftp/348181/26 "2014-11-19T14:15:37Z")

</div>

You have not defined the value of FILE.

---

<div class="post-metadata">

**Author:** ![maruf](https://community.unix.com/letter_avatar/maruf/32/5_5575768a8748004e209b776fc1b2916d.png) [@maruf](https://community.unix.com/u/maruf)\
**Post date:** [November 19, 2014, 2:40pm UTC](https://community.unix.com/t/need-a-shell-script-for-ftp/348181/27 "2014-11-19T14:40:16Z")

</div>

```nohighlight
exec >/tmp/log
exec 2>&1  
  HOST=''
  ftpuser=''
  ftppass=''
  NOW=$(date +"%m-%d-%Y")
  FILE="XXXX.$(date +%y%m%d)"
if ! mkdir /tmp/$$
then
        echo "Couldn't create /tmp/$$" >&2
        exit 1
fi

echo "Storing into /tmp/$$" >&2

SrcDir="FTP"
DstDi='/tmp/'

trap "rm -Rf /tmp/$$" EXIT # Clean up temp folder when the script quits by any means

# Check if you can connect.
ftp -nvd $HOST <<EOF
quote user $ftpuser
quote pass $ftppass
hash
prompt off
ls
EOF

if ["$?" -ne 0]
then
        echo "Couldn't connect" >&2
        exit
fi

# Get the remote file
ftp -nvd $HOST <<EOF
quote USER $ftpuser 
quote PASS $ftppass
hash
prompt off
lcd /tmp/$$
bin
get $FILE
bye
EOF

if ["$?" -ne 0]
then
        echo "Couldn't retrieve $FILE" >&2
        exit
fi

OLDIFS="$IFS" # Special IFS variable controls splitting of unquoted variables
IFS="/"

for FILE in /tmp/$$/*
do
        if [! -f "$FILE"]
        then
                echo "No files retrieved" >&2
                exit 1
        fi

        set -- $FILE # Splits /path/to/file into $1="", $2="path", $3="to", $4="file"
        shift $(( $# - 1 )) # $1="file", all the rest disappears

        if ["$(wc -c < "${DstDi}/$1")" -ne "$(wc -c < "/tmp/$$/$1")"]
        then
                echo "Sizes of original and new file differ" >&2
                exit
        fi
done

IFS="$OLDIFS"

```

---

<div class="post-metadata">

**Author:** ![Corona688](https://community.unix.com/letter_avatar/corona688/32/5_5575768a8748004e209b776fc1b2916d.png) [@Corona688](https://community.unix.com/u/Corona688)\
**Post date:** [November 19, 2014, 2:50pm UTC](https://community.unix.com/t/need-a-shell-script-for-ftp/348181/28 "2014-11-19T14:50:34Z")

</div>

Found my mistake.

```nohighlight
exec >/tmp/log
exec 2>&1  
  HOST=''
  ftpuser=''
  ftppass=''
  NOW=$(date +"%m-%d-%Y")
  FILE="XXXX.$(date +%y%m%d)"
if ! mkdir /tmp/$$
then
        echo "Couldn't create /tmp/$$" >&2
        exit 1
fi

echo "Storing into /tmp/$$" >&2

SrcDir="FTP"
DstDi='/tmp/'

trap "rm -Rf /tmp/$$" EXIT # Clean up temp folder when the script quits by any means

# Check if you can connect.
ftp -nvd $HOST <<EOF
quote user $ftpuser
quote pass $ftppass
hash
prompt off
ls
EOF

if ["$?" -ne 0]
then
        echo "Couldn't connect" >&2
        exit
fi

# Get the remote file
ftp -nvd $HOST <<EOF
quote USER $ftpuser 
quote PASS $ftppass
hash
prompt off
lcd /tmp/$$
bin
get $FILE
bye
EOF

if ["$?" -ne 0]
then
        echo "Couldn't retrieve $FILE" >&2
        exit
fi

OLDIFS="$IFS" # Special IFS variable controls splitting of unquoted variables
IFS="/"

for FILE in /tmp/$$/*
do
        if [! -f "$FILE"]
        then
                echo "No files retrieved" >&2
                exit 1
        fi

        set -- $FILE # Splits /path/to/file into $1="", $2="path", $3="to", $4="file"
        shift $(( $# - 1 )) # $1="file", all the rest disappears

        if [$(wc -c < "${DstDi}/$1" ) -ne $(wc -c < "/tmp/$$/$1" )]
        then
                echo "Sizes of original and new file differ" >&2
                exit
        fi
done

IFS="$OLDIFS"

```

---

<div class="post-metadata">

**Author:** ![Corona688](https://community.unix.com/letter_avatar/corona688/32/5_5575768a8748004e209b776fc1b2916d.png) [@Corona688](https://community.unix.com/u/Corona688)\
**Post date:** [November 19, 2014, 3:19pm UTC](https://community.unix.com/t/need-a-shell-script-for-ftp/348181/29 "2014-11-19T15:19:09Z")

</div>

```nohighlight
  HOST=''
  ftpuser=''
  ftppass=''
  NOW=$(date +"%m-%d-%Y")
  FILE="XXXX.$(date +%y%m%d)"
if ! mkdir /tmp/$$
then
        echo "Couldn't create /tmp/$$" >&2
        exit 1
fi

echo "Storing into /tmp/$$" >&2

SrcDir="FTP"
DstDi='/tmp/'

trap "rm -Rf /tmp/$$" EXIT # Clean up temp folder when the script quits by any means

# Check if you can connect.
ftp -nvd $HOST 2>&1 <<EOF | tee $NOW
quote user $ftpuser
quote pass $ftppass
hash
prompt off
ls
EOF

if ["$?" -ne 0]
then
        echo "Couldn't connect" >&2
        exit 1
fi

# Get the remote file
ftp -nvd $HOST <<EOF
quote USER $ftpuser 
quote PASS $ftppass
hash
prompt off
lcd /tmp/$$
bin
get $FILE
bye
EOF

if ["$?" -ne 0] || [! -f /tmp/$$/$FILE]
then
        echo "Couldn't retrieve $FILE" >&2
        exit 1
fi

FTPSIZE=$(awk '$NF==FILE { print $(NF-1) }' FILE="$FILE" "$NOW")
LOCALSIZE=$(wc -c < /tmp/$$/$FILE)

if ["$FTPSIZE" -ne "$LOCALSIZE"]
then
        echo "File differs from remote size" >&2
        exit 1
fi

# File has successfully transferred, move it from /tmp/$$ into /tmp
mv /tmp/$$/$FILE /tmp

```

---

<div class="post-metadata">

**Author:** ![maruf](https://community.unix.com/letter_avatar/maruf/32/5_5575768a8748004e209b776fc1b2916d.png) [@maruf](https://community.unix.com/u/maruf)\
**Post date:** [November 25, 2014, 1:13pm UTC](https://community.unix.com/t/need-a-shell-script-for-ftp/348181/30 "2014-11-25T13:13:25Z")

</div>

```nohighlight
NOW=$(date +"%m%d%Y")
  FILE="XXXXX.TXT"
#I add below for changing the file name with below format
  filename=YYYYL.$(date --date="-1 day" +"%Y%m%d").001
exec > $NOW.log
exec 2>&1

if ! mkdir /tmp/$$
then
        echo "Couldn't create /tmp/$$" >&2
        exit 1
fi

echo "Storing into /tmp/$$" >&2

SrcDir="FTP"
DstDi='/tmp/'

trap "rm -Rf /tmp/$$" EXIT # Clean up temp folder when the script quits by any means

# Check if you can connect.
ftp -nvd $HOST 2>&1 <<EOF | tee $NOW
quote user $ftpuser
quote pass $ftppass
hash
prompt off
ls
EOF

if ["$?" -ne 0]
then
        echo "Couldn't connect" >&2
        exit 1
fi

# Get the remote file
ftp -nvd $HOST <<EOF
quote USER $ftpuser 
quote PASS $ftppass
hash
prompt off
lcd /tmp/$$
bin
get $FILE
bye
EOF

if ["$?" -ne 0] || [! -f /tmp/$$/$FILE]
then
        echo "Couldn't retrieve $FILE" >&2
        exit 1
fi

FTPSIZE=$(awk '$NF==FILE { print $(NF-1) }' FILE="$FILE" "$NOW")
LOCALSIZE=$(wc -c < /tmp/$$/$FILE)

if ["$FTPSIZE" -ne "$LOCALSIZE"]
then
        echo "File differs from remote size" >&2
        exit 1
fi

#I add below for copy file from tmp and save the file as specific name 
cp -p /tmp/$$/$FILE /tmp/$filename

# File has successfully transferred, move it from /tmp/$$ into /tmp
mv /tmp/$$/$FILE /tmp
echo "SUCCESSFULLY RETRIEVED $FILE & RENAME AS $filename" >&2

```

---

<div class="post-metadata">

**Author:** ![Corona688](https://community.unix.com/letter_avatar/corona688/32/5_5575768a8748004e209b776fc1b2916d.png) [@Corona688](https://community.unix.com/u/Corona688)\
**Post date:** [November 25, 2014, 2:45pm UTC](https://community.unix.com/t/need-a-shell-script-for-ftp/348181/31 "2014-11-25T14:45:52Z")

</div>

```nohighlight
NOW=$(date +"%m%d%Y")
 FILE="XXXXX.TXT"
#I add below for changing the file name with below format
  filename=YYYYL.$(date --date="-1 day" +"%Y%m%d").001

DATEFILE="/tmp/datefile"

exec > $NOW.log
exec 2>&1

if ! mkdir /tmp/$$
then
        echo "Couldn't create /tmp/$$" >&2
        exit 1
fi

echo "Storing into /tmp/$$" >&2

SrcDir="FTP"
DstDi='/tmp/'

trap "rm -Rf /tmp/$$" EXIT # Clean up temp folder when the script quits by any means

# Check if you can connect.
ftp -nvd $HOST 2>&1 <<EOF | tee $NOW
quote user $ftpuser
quote pass $ftppass
hash
prompt off
ls
EOF

if ["$?" -ne 0]
then
        echo "Couldn't connect" >&2
        exit 1
fi

# Get the remote file
ftp -nvd $HOST <<EOF
quote USER $ftpuser 
quote PASS $ftppass
hash
prompt off
lcd /tmp/$$
bin
get $FILE
bye
EOF

if ["$?" -ne 0] || [! -f /tmp/$$/$FILE]
then
        echo "Couldn't retrieve $FILE" >&2
        exit 1
fi

FTPSIZE=$(awk '$NF==FILE { print $(NF-1) }' FILE="$FILE" "$NOW")
LOCALSIZE=$(wc -c < /tmp/$$/$FILE)

if ["$FTPSIZE" -ne "$LOCALSIZE"]
then
        echo "File differs from remote size" >&2
        exit 1
fi

NEWDATE=$(awk 'NR==1 { print substr($1, 9) }' /tmp/$$/"$FILE" )

if [-f "$DATEFILE"]
then
        read OLDDATE < "$DATEFILE"

        if [-z "$OLDDATE"] || [-z "$NEWDATE"] || ["$OLDDATE" = "$NEWDATE"]
        then
                echo "old=$OLDDATE, new=$NEWDATE, error" >&2
                exit 1
        fi
fi

echo "$NEWDATE" > "$DATEFILE"

#I add below for copy file from tmp and save the file as specific name 
cp -p /tmp/$$/$FILE /tmp/$filename

# File has successfully transferred, move it from /tmp/$$ into /tmp
mv /tmp/$$/$FILE /tmp
echo "SUCCESSFULLY RETRIEVED $FILE & RENAME AS $filename, new date is $NEWDATE" >&2

```

---

<div class="post-metadata">

**Author:** ![Chubler\_XL](https://community.unix.com/user_avatar/community.unix.com/chubler_xl/32/2077_2.png) [@Chubler\_XL](https://community.unix.com/u/Chubler_XL)\
**Post date:** [November 25, 2014, 3:19pm UTC](https://community.unix.com/t/need-a-shell-script-for-ftp/348181/32 "2014-11-25T15:19:32Z")

</div>

The ls format for Microsoft's FTP server appears to be like this:

```nohighlight
---------- 1 owner group 1803128 Jul 10 10:18 source.zip
d--------- 1 owner group 0 May 9 19:45 upload

```

so I believe size should be $(NF-4):

```nohighlight
FTPSIZE=$(awk '$NF==FILE { print $(NF-4) }' FILE="$FILE" "$NOW")

```

---

<div class="post-metadata">

**Author:** ![maruf](https://community.unix.com/letter_avatar/maruf/32/5_5575768a8748004e209b776fc1b2916d.png) [@maruf](https://community.unix.com/u/maruf)\
**Post date:** [November 26, 2014, 11:28am UTC](https://community.unix.com/t/need-a-shell-script-for-ftp/348181/33 "2014-11-26T11:28:10Z")

</div>

I've added the script into shell script menu. After run the menu option it not showing any msg but the log files generated properly in specified location also written the error msg to log..But i need to show the error msg or successful msg after executing the script through menu.

---

<div class="post-metadata">

**Author:** ![Corona688](https://community.unix.com/letter_avatar/corona688/32/5_5575768a8748004e209b776fc1b2916d.png) [@Corona688](https://community.unix.com/u/Corona688)\
**Post date:** [November 26, 2014, 11:28am UTC](https://community.unix.com/t/need-a-shell-script-for-ftp/348181/34 "2014-11-26T11:28:45Z")

</div>

Show your menu script.

Show what it's doing.

Show what you want it to do.

---

<div class="post-metadata">

**Author:** ![maruf](https://community.unix.com/letter_avatar/maruf/32/5_5575768a8748004e209b776fc1b2916d.png) [@maruf](https://community.unix.com/u/maruf)\
**Post date:** [November 26, 2014, 11:58am UTC](https://community.unix.com/t/need-a-shell-script-for-ftp/348181/35 "2014-11-26T11:58:51Z")

</div>

```nohighlight
function main_menu()
{
    while :
    do
        echo
	clear
        echo "------------------------------------------------------------------------------------"   
        echo ""
	     echo " ABC System Limited"
	     echo " MAIN MENU"
        echo "------------------------------------------------------------------------------------"
        echo
	echo " Before"
	echo 
        echo " 1.Retrieve & Transfer Files"
	echo
	echo " Start"
	echo 
        echo " 2.start Batch run"
	echo " 3.Generate Report & Monitor log" 
	echo						
        echo " After"
	echo
	echo " 4.Retrieve & Transfer sys Files"
	echo " 5.Retrieve & Transfer DB & log files"
	echo 			
        echo " 99.Quit"
        echo""
        echo "--------------------------------v1.0-------------------------------------------------"
        echo ""
        read -p "Select from 1-7 or 99 to Exit: " m_choice
        echo
 
        case "$m_choice" in 
            1) incoming
                echo
                ;;
            2) outgoing
                echo
                ;;
            3) backup
                ;;
            99) exit 0
                ;;
            *) echo "Bad Option"
                echo
                ;;
        esac
    done
}
 
function incoming()
{
    while :
    do
        echo
        clear
        echo "------------------------------------------------------------------------------------"
        echo ""
        echo " ABC System Limited"
        echo " Support Team" 
        echo "------------------------------------------------------------------------------------"
        echo
	echo " Retrieve & Transfer files"
	echo
        echo " 11. Retrieve & Transfer files1"
        echo " 12. Retrieve & Transfer files2"
        echo " 13. Retrieve & Transfer file3"
	echo " 14. Retrieve & Transfer file4"
	echo 
	echo " 00. Retrieve all"
        echo ""
	echo " 99. Exit"
        echo ""
	echo "--------------------------------v1.0-------------------------------------------------"
	echo ""
        read -p "Selct From 1-4 or Select All: " s_choice
        echo
 
        case "$s_choice" in
            11) /tmp/menu45.sh [run the script]
                ;;
            12) echo "Sub-Menu Option 2"
                echo
                ;;
	    13) echo "Sub-Menu Option 3"
                echo 
		;;
	    14) echo "Sub-Menu Option 4"
                echo 
		;;
	   97) echo "Sub-Menu Option 5"
                echo
                ;;

            99) main_menu
                ;;

            *) echo "Bad Option"
                echo
                ;;
        esac
    done
}
 main_menu
exit 1

```

if successfull below mess will show  
Following file has been Retrieved from FTP  
filename here  
Renamed as  
renamed filename

if error  
file size mismatch  
Expected file was not in location  
expected filename ""  
file indicator problem

And Transfer to server

---

<div class="post-metadata">

**Author:** ![Corona688](https://community.unix.com/letter_avatar/corona688/32/5_5575768a8748004e209b776fc1b2916d.png) [@Corona688](https://community.unix.com/u/Corona688)\
**Post date:** [November 26, 2014, 1:02pm UTC](https://community.unix.com/t/need-a-shell-script-for-ftp/348181/36 "2014-11-26T13:02:46Z")

</div>

```nohighlight
function main_menu()
{
    while :
    do
        echo
	clear
        echo "------------------------------------------------------------------------------------"   
        echo ""
	     echo " ABC System Limited"
	     echo " MAIN MENU"
        echo "------------------------------------------------------------------------------------"
        echo
	echo " Before"
	echo 
        echo " 1.Retrieve & Transfer Files"
	echo
	echo " Start"
	echo 
        echo " 2.start Batch run"
	echo " 3.Generate Report & Monitor log" 
	echo						
        echo " After"
	echo
	echo " 4.Retrieve & Transfer sys Files"
	echo " 5.Retrieve & Transfer DB & log files"
	echo 			
        echo " 99.Quit"
        echo""
        echo "--------------------------------v1.0-------------------------------------------------"
        echo ""
        read -p "Select from 1-7 or 99 to Exit: " m_choice
        echo
 
        case "$m_choice" in 
            1) incoming
                echo
                ;;
            2) outgoing
                echo
                ;;
            3) backup
                ;;
            99) exit 0
                ;;
            *) echo "Bad Option"
                echo
                ;;
        esac
    done
}
 
function incoming()
{
    while :
    do
        echo
        clear
        echo "------------------------------------------------------------------------------------"
        echo ""
        echo " ABC System Limited"
        echo " Support Team" 
        echo "------------------------------------------------------------------------------------"
        echo
	echo " Retrieve & Transfer files"
	echo
        echo " 11. Retrieve & Transfer files1"
        echo " 12. Retrieve & Transfer files2"
        echo " 13. Retrieve & Transfer file3"
	echo " 14. Retrieve & Transfer file4"
	echo 
	echo " 00. Retrieve all"
        echo ""
	echo " 99. Exit"
        echo ""
	echo "--------------------------------v1.0-------------------------------------------------"
	echo ""
        read -p "Selct From 1-4 or Select All: " s_choice
        echo
 
        case "$s_choice" in
            11) /home/maruf/menu45.sh
                  printf "Hit enter to return to menu"
                  read REPLY
                ;;
            12) echo "Sub-Menu Option 2"
                echo
                ;;
	    13) echo "Sub-Menu Option 3"
                echo 
		;;
	    14) echo "Sub-Menu Option 4"
                echo 
		;;
	   97) echo "Sub-Menu Option 5"
                echo
                ;;

            99) main_menu
                ;;

            *) echo "Bad Option"
                echo
                ;;
        esac
    done
}
 main_menu
exit 1

```

[Previous page](https://community.unix.com/t/need-a-shell-script-for-ftp/348181.md?page=1)
