参考视频:https://www.imooc.com/u/279399/courses?sort=publish
https://www.imooc.com/video/6516 慕课网
用户的自定义变量:
[root@localhost ~]# x=5
[root@localhost ~]# echo $x
5
[root@localhost ~]# y=6
[root@localhost ~]# z=$x+$y
[root@localhost ~]# echo z
z
[root@localhost ~]# echo $z
5+6
变量不会直接进行数值相加
变量的叠加
[root@localhost ~]# x=123
[root@localhost ~]# x="$x"456
[root@localhost ~]# echo $x
123456
[root@localhost ~]#
环境变量
环境变量是全局变量自定义变量是局部变量
将目录/root/sh目录添加到系统环境变量中
[root@localhost ~]# echo $PATH
/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/usr/local/jdk/jdk1.7.0_80/bin:/root/bin
[root@localhost ~]# PATH="$PATH":/root/sh
[root@localhost ~]# echo $PATH
/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/usr/local/jdk/jdk1.7.0_80/bin:/root/bin:/root/sh
[root@localhost ~]#
[root@localhost ~]# locale
LANG=en_US.UTF-8
LC_CTYPE="en_US.UTF-8"
LC_NUMERIC="en_US.UTF-8"
LC_TIME="en_US.UTF-8"
LC_COLLATE="en_US.UTF-8"
LC_MONETARY="en_US.UTF-8"
LC_MESSAGES="en_US.UTF-8"
LC_PAPER="en_US.UTF-8"
LC_NAME="en_US.UTF-8"
LC_ADDRESS="en_US.UTF-8"
LC_TELEPHONE="en_US.UTF-8"
LC_MEASUREMENT="en_US.UTF-8"
LC_IDENTIFICATION="en_US.UTF-8"
LC_ALL=
[root@localhost ~]# echo $LANG
en_US.UTF-8
[root@localhost ~]#
Linux纯粹的字符界面是不支持中文的。
第三方工具SecureCRT 7.3,可以设定支持UTF-8
把外部传递的第一个变量赋值给num1
把外部传递的第二个变量赋值给num2
#!/bin/bashnum1=$1num2=$2sum=$(($num1+$num2))echo $sum
执行:
[root@localhost home]# ./aa.sh 111 222
333
111传递给num1 ,222传递给num2
$((带上两个小括号表示数值运算的操作
第二个操作案例:
bb.sh
#!/bin/bashecho $*echo $@echo $#
[root@localhost home]# ./bb.sh 88 99 00 22 77
88 99 00 22 77
88 99 00 22 77
5
$*和$@都是将产生当成整个返回,但是二者的区别是$*是把输入参数当成一个整体,所以for循环只会循环一次
这里有一个特别需要强调的是使用$*和$@必须使用双引号括起来,不然在使用的时候数值会发生变化
#!/bin/bashfor i in "$@"do echo $idone
[root@localhost home]# ./bb.sh 88 99 00 22 77
88
99
00
22
77
[root@localhost home]# kjdfkjkjfd
-bash: kjdfkjkjfd: command not found
[root@localhost home]# $?
-bash: 127: command not found
返回值是127
[root@localhost home]# echo $$
1106
read -p "please input your name:" -t 10 nameecho $name
制定等待的时间是10秒
[root@localhost home]# ./dd.sh
please input your name:ksdfk
ksdfk