Shell编程基础

Shell入门程序

#!/bin/bash

DATE=`date`
echo "Date is $DATE"

USERS=`who | wc -l`
echo "Logged in user are $USERS"

UP=`date ; uptime`
echo "Uptime is $UP"

Shell输入

#!/bin/bash

echo "What is your name ?"
read PERSON
echo "Hello, $PERSON"

数值运算符

假设a=10,b=20

运算符              说明                                         举例

+                      加法                          `expr $a + $b` 结果为 30。
-                       减法                          `expr $a - $b` 结果为 10。
*                       乘法                          `expr $a \* $b` 结果为  200。
/                       除法                          `expr $b / $a` 结果为 2。
%                     取余                          `expr $b % $a` 结果为 0。
=                      赋值                          a=$b 将把变量 b 的值赋给 a。
==                   相等                          用于比较两个数字,相同则返回 true。     [ $a == $b ] 返回 false。
!=                   不相等                        用于比较两个数字,不相同则返回 true。  [ $a != $b ] 返回 true。
注意:

1、乘号(*)前边必须加反斜杠(\)才能实现乘法运算;

2、条件表达式要放在方括号之间,并且要有空格,例如 [$a==$b] 是错误的,必须写成 [ $a == $b ]。

#!/bin/bash

a=10
b=20

val=`expr $a + $b`
echo "a + b : $val"

val=`expr $a - $b`
echo "a - b : $val"

val=`expr $a \* $b`
echo "a * b : $val"

val=`expr $b / $a`
echo "b / a : $val"

if [ $a == $b ]
then
	echo "a is equal to b"
fi

if [ $a != $b ]
then
	echo "a is not equel to b"
fi

比较运算符

运算符                                说明                                                                               举例
-eq              检测两个数是否相等,相等返回 true。                                     [ $a -eq $b ]返回 false。
-ne              检测两个数是否相等,不相等返回 true。                                  [ $a -ne $b ]返回 true。
-gt              检测左边的数是否大于右边的,如果是,则返回 true。              [ $a -gt $b ]返回 false。
-lt               检测左边的数是否小于右边的,如果是,则返回 true。               [ $a -lt $b ]返回 true。
-ge             检测左边的数是否大等于右边的,如果是,则返回 true。        [ $a -ge $b ]返回 false。
-le              检测左边的数是否小于等于右边的,如果是,则返回 true。        [ $a -le $b ]返回 true。
#!/bin/bash

a=10
b=20

if [ $a -eq $b ]
then
	echo "$a -eq $b : a is equal to b"
else
	echo "$a -eq $b : a is not equal to b"
fi

if [ $a -ne $b ]
then
   echo "$a -ne $b : a is not equal to b"
else
   echo "$a -ne $b : a is equal to b"
fi

if [ $a -gt $b ]
then
	echo "$a -gt $b : a is greater than b"
else
	echo "$a -gt $b : a is not greater than b"
fi

if [ $a -lt $b ]
then
	echo "$a -lt $b : a is less than b"
else
	echo "$a -lt $b : a is not less than b"
fi

if [ $a -ge $b ]
then
	echo "$a -ge $b : a is greater or equal to b"
else
	echo "$a -ge $b : a is not greater or equal to b"
fi

if [ $a -le $b ]
then
   echo "$a -le $b : a is less or equal to b"
else
   echo "$a -le $b : a is not less or equal to b"
fi

逻辑运算符

运算符                                      说明                                                                       举例
!                     非运算,表达式为true则返回false,否则返回true。             [ ! false ]返回 true。
-o                  或运算,有一个表达式为true则返回true。                            [$a -lt 20 -o $b -gt 100]返回 true。
-a                  与运算,两个表达式都true才返回true。                                [$a -lt 20 -a $b -gt 100]返回 false。
#!/bin/bash

a=10
b=20

if [ $a != $b ]
then
   echo "$a != $b : a is not equal to b"
else
   echo "$a != $b : a is equal to b"
fi

if [ $a -lt 100 -a $b -gt 15 ]
then
   echo "$a -lt 100 -a $b -gt 15 : returns true"
else
   echo "$a -lt 100 -a $b -gt 15 : returns false"
fi

if [ $a -lt 100 -o $b -gt 100 ]
then
   echo "$a -lt 100 -o $b -gt 100 : returns true"
else
   echo "$a -lt 100 -o $b -gt 100 : returns false"
fi

if [ $a -lt 5 -o $b -gt 100 ]
then
   echo "$a -lt 100 -o $b -gt 100 : returns true"
else
   echo "$a -lt 100 -o $b -gt 100 : returns false"
fi

字符串操作符

运算符                                       说明                                                         举例
=                    检测两个字符串是否相等,相等返回 true。            [ $a = $b ] 返回 false。
!=                   检测两个字符串是否相等,不相等返回 true。         [ $a != $b ] 返回 true。
-z                   检测字符串长度是否为0,为0返回 true。                [ -z $a ] 返回 false。
-n                   检测字符串长度是否为0,不为0返回 true。            [ -z $a ] 返回 true。
str                  检测字符串是否为空,不为空返回 true。                [ $a ] 返回 true。
#!/bin/bash

a="abc"
b="efg"

if [ $a = $b ]
then
	echo "$a = $b : a is equal to b"
else
	echo "$a = $b : a is not equal to b"
fi

if [ $a != $b ]
then
	echo "$a != $b : a is not equal to b"
else
	echo "$a != $b : a is equal to b"
fi

if [ -z $a ]
then
	echo "-z $a : string length is zero"
else
	echo "-z $a : string length is not zero"
fi

if [ -n $a ]
then
	echo "-n $a : string length is not zero"
else
	echo "-n $a : string length is zero"
fi

if [ $a ]
then
	echo "$a : string is not empty"
else
	echo "$a : string is empty"
fi

文件操作符

操作符                                              说明
-b file               检测文件是否是块设备文件,如果是,则返回 true。
-c file               检测文件是否是字符设备文件,如果是,则返回 true。
-d file              检测文件是否是目录,如果是,则返回 true。
-f file               检测文件是否是普通文件(既不是目录,也不是设备文件),如果是返回 true。
-g file              检测文件是否设置了 SGID 位,如果是,则返回 true。
-k file              检测文件是否设置了粘着位(Sticky Bit),如果是,则返回 true。
-p file              检测文件是否是具名管道,如果是,则返回 true。
-u file              检测文件是否设置了 SUID 位,如果是,则返回 true。
-r file               检测文件是否可读,如果是,则返回 true。
-w file              检测文件是否可写,如果是,则返回 true。
-x file               检测文件是否可执行,如果是,则返回 true。
-s file               检测文件是否为空(文件大小是否大于0),不为空返回 true。

-e file               检测文件(包括目录)是否存在,如果是,则返回 true。

#!/bin/bash

file="/home/zxt/shell/shell运算符/test.txt"

if [ -r $file ]
then
	echo "File has read access"
else
	echo "File does not read access"
fi

if [ -w $file ]
then
	echo "File has write permission"
else
	echo "File has not have write permission"
fi

if [ -x $file ]
then
	echo "File has execute permission"
else
	echo "File does not have execute permission"
fi

if [ -f $file ]
then
	echo "File is an ordinary file"
else
	echo "This is special file"
fi

if [ -d $file ]
then
	echo "File is a director"
else
	echo "This is not a director"
fi

if [ -s $file ]
then
	echo "File size is zero"
else
	echo "File size is not zero"
fi

if [ -e $file ]
then
	echo "File exists"
else
	echo "File does not exist"
fi

Shell变量替换

        #!/bin/bash

        fi# ${var}:变量本来的值

        # ${var:-word}:如果变量var为空或已删除(unset),那么返回word,但不改变var的值
        # ${var:=word}:如果变量var为空或已删除(unset),那么返回word,并将var的值设置为word
        # ${var:+word}:如果变量var被定义,那么返回word,但不改变var的值。
        # ${var:?message}:如果变量var为空或已删除(unset),那么将消息message送到标准错误输出,可以用来检测变量var是否可以被正常赋值。若此替换出现在shell脚本中,那么脚本将停止运行。

#!/bin/bash

echo ${var:-"Variable is not set"}
echo "1 - Value of var is ${var}"

echo ${var:="Variable is not set"}
echo "2 - Value of var is ${var}"

unset var
echo ${var:+"This is default value"}
echo "3 - Value of var is $var"

var="Prefix"
echo ${var:+"This is default value"}
echo "4 - Value of var is $var"

echo ${var:?"Print this message"}
echo "5 - Value of var is ${var}"

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值