Home > Net >  Bash Shell Script Issues
Bash Shell Script Issues

Time:03-01

I am new to UNIX and have a homework assignment that is giving me trouble. I am to write a script that will back up specified files from the current directory into a specified destination directory. This script is to take three arguments.

  1. sourcePath, which is the path to the source files/files being backed up or copied.
  2. backupPath, which is the path to the target directory where the files will be backed up.
  3. filePrefix, which is used to identify which files to backup, specifically only files whose names begin with the given prefix will be copied while others will be ignored. Example would be, if the user enters the letter "d", then all files starting with that letter are to be copied while any other file is to be ignored.

I haven't learned much about scripting/functions in bash so I've tried looking up tutorials which have been helpful but not enough. This script is something I can easily do when just typing out the commands. For instance, I would cd into the target directory that has the files, then using the cp command copy files that begin with the specific prefix to the target directory, but when making a script I am at a dead end.

I feel as though my code is monumentally incorrect and its due to my lack of experience, but nothing online has been of any help. So far my code is

read sourcePath
read backupPath
read filePrefix

grep /export/home/public/"$sourcePath
mkdir -p $backupPath
cp /export/home/public/"$sourcePath"/$filePrefix /home/public/"$backupPath"

So an example execution of the script would be

$ ./script.sh
(sourcePath)HW4testdir (backupPath)backup (filePrefix)d

Output:

backing up: def (example file starting with d)
backing up: dog (example file starting with d)

So far when executing the code, nothing happens. Again, I'm sure most, or even all of the code is wrong and totally off base, but I never learned about scripting. If I did not have to create a script, I could easily achieve this desired outcome.

CodePudding user response:

I suggest with bash:

read -r -p "sourcePath: " sourcePath
read -r -p "backupPath: " backupPath
read -r -p "filePrefix: " filePrefix

mkdir -p /home/public/"$backupPath"
cp /export/home/public/"$sourcePath/$filePrefix"* /home/public/"$backupPath"

Make sure that the used user has the right to create the directory /home/public/"$backupPath".

See: help read

  • Related