一、Shell变量的应用
1、Shell变量的种类
·用户自定义变量:由用户自己定义、修改和使用
·预定义变量:Bash预定义的特殊变量,不能直接修改
·位置变量:通过命令行给程序传递执行参数
2、变量的赋值与引用
·定义新的变量
变量名要以英文字母或下划线开头,区分大小写
格式:变量名=变量值
· 查看变量的值
格式:echo $变量名
echo "my name is $name"
echo "my name is ${name}bd"
·从键盘输入内容为变量赋值
格式: read [-p "信息"] 变量名
·结合不同的引号为变量赋值
双引号“”:允许通过$符号引用其他变量值
单引号‘’:禁止引用其他变量值,$视为普通字符
反撇号··:将命令执行的结果输出给变量
注意:默认单、双引号里都不能解析转义字符(如/n)的
例子A:
[root@Salve]# cat demo.sh #!/bin/bash read -p "enter you name:" name echo "my name is $name" [root@Salve]#./demo.sh enter you name:Tom my name is Tom
[root@Salve]# cat demo.sh #!/bin/bash read -p "enter you name:" name echo 'my name is $name' [root@Salve]# sh demo.sh enter you name:user44 my name is $name
[root@Salve]# cat demo.sh #!/bin/bash read -p "enter you name:" name echo 'my name is' $name [root@Salve]#./demo.sh enter you name:user55 my name is user55
[root@Salve]# cat demo.sh #!/bin/bash read -p "enter you name:" name echo '$name /n $name /n $name' echo "$name /n $name /n $name" [root@Salve]# sh demo.sh enter you name:user $name /n $name /n $name user /n user /n user
例子E:
[root@Salve scripts]# cat test.sh #!/bin/bash str1=`echo 123` str2=`date` echo $str1; echo "today is: $str2"; echo "today is: $str2!!!"; [root@Salve scripts]#./test.sh 123 today is:2016年05月24日星期二21:30:17 CST today is: 2016年 05月 24日 星期二 21:30:17 CST!!!
vim编辑文件小技巧:
ESC键后
:set nu可以设置显示行号;
:set nonu可以设置行号消失
3、删除变量
·清除用户定义的变量
格式:unset 变量名
例子:
[root@Salve]# cat test.sh #!/bin/bash #test.sh name='user123' echo $name unset name echo $name [root@Salve]# sh test.sh user123
5、位置变量
·表示为$n,n为1~9之间的数字
[root@Salve scripts]# cat demo.sh #!/bin/bash echo $1 echo $2 echo $3 echo $4 echo $5 echo $6 echo $7 echo $8 echo $9 echo $10 [root@Salve scripts]#./demo.sh a b c d e f g h i j a b c d e f g h i a0
例子:
[root@Salve scripts]# cat demo.sh #!/bin/bash case $1 in start) echo 'start...' ;; stop) echo 'stop...' ;; esac [root@Salve scripts]#./demo.sh start start... [root@Salve scripts]#./demo.sh stop stop...
4、预定义变量
·表示形式如下:
$#:命令行中位置参数的个数
$*:所有位置参数的内容
$?:上一条命令执行后返回的状态,当返回状态值为0时表示执行正常,非0值表示执行异常或出错
$0:当前执行的进程/程序名
例子A:$0显示当前脚本的名称[root@Salve scripts]# cat a.sh #!/bin/bash echo "当前您正在执行的脚本名称是:"$0 echo $0 echo $0
[root@Salve scripts]#./a.sh
当前您正在执行的脚本名称是:./a.sh
./a.sh
./a.sh
[root@Salve scripts]# cat a.sh #!/bin/bash echo "总共有${#}个参数" echo "参数的内容是:$*" [root@Salve scripts]#./a.sh a b c d e f g h i j k l m n o p q 总共有17个参数 参数的内容是:a b c d e f g h i j k l m n o p q
例子C:
[root@Salve scripts]# cat b.sh #!/bin/bash for i in$*;do echo $i done [root@Salve scripts]#./b.sh a b c a b c
例子D:
[root@Salve scripts]# cat test.sh #!/bin/bash tot=0 for i in $*;do tot=$(($tot+$i)) done echo $tot [root@Salve scripts]#./test.sh 12345 15
[root@Salve scripts]# cat temp.sh #!/bin/bash ls -l echo $? [root@Salve scripts]#./temp.sh 总用量8 -rwxr-xr-x.1 root root 285月2414:31 temp.sh -rwxr-xr-x.1 root root 695月2414:27 test.sh 0
[root@Salve scripts]# cat temp.sh #!/bin/bash #ll ls if[[$?==0]];then echo '上一条命令执行成功' else echo '上一条命令执行失败' fi [root@Salve scripts]#./temp.sh temp.sh test.sh
上一条命令执行成功
6、计算整数表达式的运算结果
格式:expr 变量1 运算符 变量2 ...[运算符 变量n]
expr的常用运算符(现在较少用,用简单的方法)
加法运算:+
减法运算:-
乘法运算:*
除法运算:/
求模(取余)运算:%
[root@Salve scripts]# cat a.sh #!/bin/bash expr 10+20 expr $1 + $2 num=`expr 1+2` echo $num [root@Salve scripts]#./a.sh 1155 30 66 3
[root@Salve scripts]# cat a.sh #!/bin/bash num1=$((4+2)) num2=$((4-2)) num3=$((4*2)) num4=$((4/2)) num5=$((4%2)) echo $num1 echo $num2 echo $num3 echo $num4 echo $num5 [root@Salve scripts]#./a.sh 6 2 8 2 0