shell编程(2)
  TNZdNLJrAgNB 2023年11月02日 29 0

Shell命令

1.read命令

从键盘读入数据,赋给变量

read 变量名

read -p "提示信息:"变量名

read -t 5 -p "提示信息:"变量名 超时5s,自动退出


例1:

[root@node1 ~]# vim read.sh

#!/bin/sh

read A B C

echo "the first parameter is $A"

echo "the second parameter is $B"

echo "the third parameter is $C"

[root@node1 ~]# sh read.sh

1 2 3

the first parameter is 1

the second parameter is 2

the third parameter is 3


[root@node1 ~]# sh -x read.sh

+ read A B C

4 5 6

+ echo 'the first parameter is 4'

the first parameter is 4

+ echo 'the second parameter is 5'

the second parameter is 5

+ echo 'the third parameter is 6'

the third parameter is 6

注:sh加上-x选项可以显示脚本执行过程

2.expr命令

Shell变量的算术运算:

expr命令:对整数型变量进行算术运算

例如:注意运算符号左右都有空格

expr 3 + 5 相当于或 echo $[5+3]

expr $var1 - 5

expr $var1 / $var2

expr $var3 \* 10


复杂的运算:

expr `expr 5 + 7` /$var4

相当于(5+7)/var4


将运算结果赋予变量:

var4=`expr $var1 / $var2`


例1:

[root@node1 ~]# vim expr.sh

#!/bin/sh

a=10

b=20

c=30

value1=`expr $a + $b + $c`

echo "The value of value1 is $value1"

value2=`expr $c / $b`

echo "The value of value2 is $value2"

value3=`expr $c \* $b`

echo "The value of value3 is $value3"

value4=`expr $a + $c / $b`

echo "The value of value4 is $value4"

[root@node1 ~]# sh expr.sh

The value of value1 is 60

The value of value2 is 1

The value of value3 is 600

The value of value4 is 11


脚本执行过程:

[root@node1 ~]# sh -x expr.sh

+ a=10

+ b=20

+ c=30

++ expr 10 + 20 + 30

+ value1=60

+ echo 'The value of value1 is 60'

The value of value1 is 60

++ expr 30 / 20

+ value2=1

+ echo 'The value of value2 is 1'

The value of value2 is 1

++ expr 30 '*' 20

+ value3=600

+ echo 'The value of value3 is 600'

The value of value3 is 600

++ expr 10 + 30 / 20

+ value4=11

+ echo 'The value of value4 is 11'

The value of value4 is 11

3.字符串处理(切片、截取、替换等)

例1:

[root@node1 ~]# man="I am a man"

[root@node1 ~]# echo $man

I am a man

输出字符串的个数

[root@node1 ~]# echo ${#man}

10

[root@node1 ~]# echo ${man} | wc -L

10

[root@node1 ~]# echo ${man} | awk '{print length}'

10

[root@node1 ~]# expr length "$man"

10

输出字符串第1个字符之后的内容

[root@node1 ~]# echo ${man:1}

am a man

输出字符串第2个字符之后2个字符的内容

[root@node1 ~]# echo ${man:2:2}

am

例2:

[root@node1 ~]# url=www.sina.com.cn

[root@node1 ~]# echo $url

www.sina.com.cn

显示字符串第1个分隔符后的内容

[root@node1 ~]# echo ${url#*.} #从左往右看,所以是*.

sina.com.cn

显示字符串最后1个分隔符后的内容

[root@node1 ~]# echo ${url##*.}

cn

显示字符串最后1个分隔符前的内容

[root@node1 ~]# echo ${url%.*} #从右往左看,所以是.*

www.sina.com

显示字符串第1个分隔符前的内容

[root@node1 ~]# echo ${url%%.*}

www

总结,从左往右删用“#”,从右往左删用“%

字符串内容替换

[root@node1 ~]# echo ${url/sina/baidu}

www.baidu.com.cn

贪婪匹配

[root@node1 ~]# echo ${url/c/d}

www.sina.dom.cn

[root@node1 ~]# echo ${url//c/d}

www.sina.dom.dn

4.变量自增

i++ 先使用i的值,再赋值计算(i+1)

++i 先赋值计算(i+1),再使用i的值(此时值为i+1)


例1:

[root@node1 ~]# i=1

[root@node1 ~]# let i++

[root@node1 ~]# let i++

[root@node1 ~]# echo $i

3

5.小数运算

[root@node1 ~]# echo 2*4 | bc

8

[root@node1 ~]# echo 2*4.6 | bc

9.2

[root@node1 ~]# echo 3 5 | awk '{print $1/$2}'

0.6


【版权声明】本文内容来自摩杜云社区用户原创、第三方投稿、转载,内容版权归原作者所有。本网站的目的在于传递更多信息,不拥有版权,亦不承担相应法律责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@moduyun.com

上一篇: Linux命令(49)之w 下一篇: GreenPlum 常用命令
  1. 分享:
最后一次编辑于 2023年11月08日 0

暂无评论

推荐阅读
  uvM09mQNI0hF   2023年11月19日   34   0   0 sedshell字符串