IFS
One of the interesting things that I have learned is the usage of IFS. According to wikipedia it stands for Internal Field Separator. What it does is allow you to define what Bash defines as a separator. Bash defaults to space as the separator, therefore functions that utilize IFS will separate items based on spaces.While scripting you might want to change this. Maybe a comma or a new line will be what is wanted. Here is an example that sets the value to a new line and then back to the default.
#set IFS to be a new line IFS=" " #set IFS to be a space IFS=" "
Checking Arguments
When you are implementing a bash script you can pass in arguments to the program. Each argument is listed as $(value) where value ranges from 0 on up. $0 is your program, $1 is the first passed in argument, etc.Now what we want to do is check how many the user input. Maybe we only want 2 values to be input, so we should check that. Here is an example that checks for 2 inputs.
if [ $# -ne 2 ]; then echo "You did not input 2 arguments, try again!" exit fi
Iterate Through all Files in CWD
Sometimes it is necessary to iterate through all files in a certain directory. There are a few ways to do this, but if you are dealing with files that may have spaces in them, the best way is the following.for file in `ls -A $src`; do sourceFile="$src/$file" # Now do what you want it to do with each source file done
* Note: In the above example you will note $src, this is the full length path where you are searching files. This can be a hard coded variable or possibly an argument to your function.
* Note: Whenever you reference sourceFile make sure to use quotes
Checking for Certain Things
When you are coding you might want to check what something is. Here are a few ways to check.Checking that a directory exists
if [ ! -d "$dir" ]; then #do something since the directory does not exist fi
Checking for a regular file
if [ -f "$file" ]; then #do something since it is a normal file fi
Checking if file1 is newer than file2
if [ "$file1" -nt "$file2" ]; then # file1 is newer, so do something here fi
No comments:
Post a Comment