exit a bash command in a script without exiting the script
I am working on a script that looks at a homework folder (the source files) and if the folder exists, it then looks for a destination folder. If that folder does not exist, it copies the source to the destination.
If the destination exists, it attempts to copy the file from the source to the destination and before doing so, prompt the user first so that it doesn't overwrite work already done by that user.
The output of the command must be in a specific format so I cannot use the standard output of the command as is. I must capture it and reformat it. Then take input (i.e. y/N) in a specific format.
The benefit of doing this, is that the copy command already does things that are helpful. If a file does not exist, it does the copy.
If a file, or several files already exist, it will repeatedly ask "overwrite y/n?" It is this case, that I'm trying to deal with.
I've made it as far as capturing the output of the copy command into a variable and suppressing its normal output so that I can reformat its output and echo that format back to the user.
Next, my thinking is that I need to kill (or otherwise stop the command somehow), then print the output in the my desired format and then re-invoke the command and on the second time, I can echo the y/N prompt in my desired format and the user can then make their choice. Despite searching, I have not been able to figure out/understand how to kill or otherwise stop the command once it is invoked. I've tried kill and various attempts at using SIGINT. Either I just don't understand how to use these, or they are not the right choice. When I try to use them, I get syntax error.
Here is my code:
#!/bin/bash USAGE="Usage: ./script2.sh [hw-name]" EINVALID="Invalid homework: $1" SOURCEDIRECTORY="$PUBLIC/homework/$1" HOMEWORKDIRECTORY="$HOME/homework/$1" COPY="$SOURCEDIRECTORY/*.*" if [ -z "$1" ]; then echo $USAGE exit fi if [ ! -d "$SOURCEDIRECTORY" ]; then echo $EINVALID exit fi if [ ! -d "$HOMEWORKDIRECTORY" ]; then echo "making homework1" mkdir -p $HOMEWORKDIRECTORY copyOutput2="$(eval cp -ir $COPY $HOMEWORKDIRECTORY 2>&1 &stop this process somehow)" echo $copyOutput2 #temporary output for testing