Use the if statement to determine parameters in shell programming
-B. returns true if the file exists and is a block file.
-C: returns true if the file exists and is a character file.
-D. If pathname exists and is a directory, true is returned.
-E: returns true if the file or directory specified by pathname exists.
-F returns true if the file exists and is a regular file
-G returns true if the file or directory specified by pathname exists and the sgid bit is set.
-H returns true if the file exists and is a symbolic link file. This option is invalid in some old systems.
-K. If a file or directory specified by pathname exists and a "Sticky" bit is set, the system returns the true value.
-P: returns true if the file exists and is a command pipeline.
-R: returns true if the file or directory specified by pathname exists and is readable.
-S: returns true if the file size is greater than 0.
-U returns true if a file or directory specified by pathname exists and SUID is set.
-W returns true if the file or directory specified by pathname exists and is executable. A directory must be executable for its content access.
-O returns true if a file or directory specified by pathname exists and the user specified by the valid user ID of the current process is owned by it.
Comparison character writing in Unix shell:
-EQ equals
-Ne is not equal
-GT greater
-Lt is less
-Le is less than or equal
-Ge is greater than or equal
-Z empty string
= Two equal characters
! = Two characters
-N non-empty string
-------------------------------------------------------------------------
For more details:
Operator Description Example
File comparison operator
-E filename if filename exists, it is true [-E/var/log/syslog]
-D filename if filename is a directory, it is true [-D/tmp/mydir]
-F filename if filename is a regular file, it is true [-F/usr/bin/grep]
-L filename if filename is a symbolic link, it is true [-L/usr/bin/grep]
-R filename if filename is readable, it is true [-r/var/log/syslog]
-W filename if filename is writable, it is true [-W/var/mytmp.txt]
-X filename if filename is executable, it is true [-L/usr/bin/grep]
Filename1-nt filename2 if filename1 is newer than filename2, it is true [/tmp/install/etc/services-nt/etc/services]
Filename1-ot filename2 if filename1 is earlier than filename2, true [/boot/bzimage-ot ARCH/i386/boot/bzimage]
String comparison operator (please note the use of quotation marks, which is a good way to prevent space from disturbing the code)
-Z string if the string length is zero, it is true [-Z $ myvar]
-N string if the string length is non-zero, it is true [-N $ myvar]
String1 = string2 if string1 is the same as string2, it is true [$ myvar = One Two Three]
String1! = String2 if string1 is different from string2, it is true [$ myvar! = One Two Three]
Arithmetic comparison operator
Num1-EQ num2 equals to [3-EQ $ mynum]
Num1-ne num2 is not equal to [3-ne $ mynum]
Num1-lt num2 is less than [3-lt $ mynum]
Num1-Le num2 is less than or equal to [3-Le $ mynum]
Num1-GT num2 is greater than [3-GT $ mynum]
Num1-ge num2 is greater than or equal to [3-ge $ mynum]
Script example:
#! /Bin/bash
# This script prints a message about your weight if you give it your
# Weight in kilos and hight in centimeters.
If [! $ #== 2]; then
Echo "Usage: $0 weight_in_kilos length_in_centimeters"
Exit
Fi
Weight = "$1"
Height = "$2"
Idealweight = $ [$ height-110]
If [$ weight-Le $ idealweight]; then
Echo "You shoshould eat a bit more fat ."
Else
Echo "You shoshould eat a bit more fruit ."
Fi
# Weight. Sh 70, 150
You shoshould eat a bit more fruit.
# Weight. Sh 70 150 33
Usage:./weight. Sh weight_in_kilos length_in_centimeters
The location parameter $1, $2,..., $ N, $ # indicates the number of parameters in the command line, and $0 indicates the Script Name,
The first parameter represents $1, the second parameter represents $2, and so on. The total number of parameters exists in $ #. The above example shows how to change the script, if there are fewer than or two additional parameters, a message is printed.
Run the command and check the status.
# Bash-x tijian. Sh 60 60 170
+ Weight = 60
+ Height = 170
+ Idealweight = 60
+ '['60-Le 60']'
+ Echo 'you should eat a bit more fat .'
You shoshould eat a bit more fat.
-X is used to check the execution of the script.