In Linux shell programming, in most cases, test commands can be used to test conditions, and here's a simple introduction,
For example, comparing strings, judging whether the file exists and whether it is readable, etc., usually uses "[]" to represent the condition test.
Note: The space here is important. The space to ensure the square brackets. I have wasted a lot of precious time because the space is missing or the position is wrong.
If ....; Then
....
Elif ...; Then
....
Else
....
Fi
[-F "somefile"]: Determine if it is a file
[-X "/bin/ls"]: Determine if/bin/ls exists and has executable permissions
[-N ' $var]: Determine if the $var variable has a value
["$a" = "$b"]: Determine if $ A and $b are equal
-r file user readable as True
-W file user can write as true
-X file user can execute as true
-F file is true for regular files
-d file files are directory-True
-C File file is true for character special files
-B file files are true for block special files
-S file files non-0 o'clock True
-T file is true when the specified device is terminal (default = 1)
Shell scripts with conditional selection are generally competent for simple shell scripts that do not contain variables. However, when you perform some decision-making tasks, you need to include the if/then criteria to judge. Shell scripting supports such operations, including comparison operations, determining whether a file exists, and so on.
The basic if Condition command options are:-eq-compare two parameters for equality (for example, if [2–eq 5])
-ne-comparison of two parameters is not equal
-lt-parameter 1 is less than parameter 2
-le-parameter 1 is less than or equal to parameter 2
-gt-parameter 1 is greater than parameter 2
-ge-parameter 1 is greater than or equal to parameter 2
-f-Check if a file exists (for example, if [-F "filename"])
-D Check if directory exists
Almost all judgments can be implemented with these comparison operators. The common-f command option in a script checks to see if it exists before executing a file.
Let's take two examples to make it easier for everyone to understand.
1. Determine if the file exists
/bin/sh!
#Judge whether the file exists
# link:www.jb51.net
# date:2013/2/27
YACCESS=`date -d yesterday +%Y%m%d`
FILE="access_$YACCESS.log.tgz"
cd /data/nginx/logs
if [ -f "$FILE" ];then
Echo "OK"
Else
echo "error $FILE" > error.log
mail -s "$FILE backup fail" [email protected] <error.log
Fi
/bin/sh!
#Clear related files and log by time period
# link:www.jb51.net
# date:2013/2/27
Wei
DIR=/data/img_cache
DAY=`date +"%Y-%m-%d %H:%M"`
NUM=`ls $DIR |wc -l`
DIRNAME=`ls $DIR| grep leveldb | head -n 1 | awk ‘{print $NF}‘`
if [[ $NUM -gt 3 ]];then
rm -rf $DIR/$DIRNAME
echo "---------$DAY----($DIR)-----------------------" >> /tmp/img_cache.log
echo "$DIRNAME Deleted successful" >> /tmp/img_cache.log
Fi
Description of the If else and greater than, less than, equal to logical expressions in the Linux shell