二、变量
1、定义变量
注: 变量名和等号之间不能有空格
命名规则: 变量名由字母数字下划线组成,且不能以数字开头,不能包含bash里面的关键字
1.1 直接赋值
a="hello"
b=10
1.2 使用语句赋值
for i in `ls /Desktop`
for f in $(ls /Desktop)
2、使用变量
在变量名前加$即可,防止变量边界解释器无法识别,在变量名外加花括号.
vim test.sh
#!/bin/bash
a=10
b="hello"
echo ${a}
echo "${b}world"
./test.sh
10
helloworld
3、修改变量为只读
readonly 变量名
4、删除变量
unset 变量名
只读变量不能被unset删除
三、字符串
1、定义字符串
字符串可以用单引号,双引号,或者不用引号.
单引号里面内容原样输出,内容中不能出现单个单引号,可出现一对单引号,用于字符串拼接.
双引号里面可以有变量和转义字符,输出结果为变量值.
python@ubuntu:~/shellscrip$ name=world
python@ubuntu:~/shellscrip$ echo 'hello,$name'
hello,$name
python@ubuntu:~/shellscrip$ echo 'hello,'$name''
hello,world
python@ubuntu:~/shellscrip$ echo "hello,$name"
hello,world
2、获取字符串长度
${#变量名}
python@ubuntu:~/shellscrip$ name=world
python@ubuntu:~/shellscrip$ echo ${#name}
5
3、获取子字符串
${变量名:索引:字段长度}
python@ubuntu:~/shellscrip$ name=world
python@ubuntu:~/shellscrip$ echo ${name:1:2}
or
注:索引起始为0
4、查找子字符串
python@ubuntu:~/shellscrip$ name=world
python@ubuntu:~/shellscrip$ echo `expr index $name ol`
2
注:ol在world中o先出现,故返回o所在位置的下标,此时下标从1开始
四、获取参数
$0 获取文件名
$# 获取参数个数
$* 获取所有参数,将所有参数组成一个字符串,返回的是字符串
$@ 获取所有参数,返回的是包含所有参数的容器
$1 获取第一个参数
$2 获取第二个参数,以此类推
python@ubuntu:~/shellscrip$ vim test.sh
1 #!/bin/bash
2 echo "获取文件名:$0"
3 echo "获取参数个数:$#"
4 echo "获取第一个参数:$1"
5 echo "获取第二个参数:$2"
6 echo "获取第三个参数:$3"
7 echo "获取所有参数方式一:$*”
8 echo "===================="
9 echo "获取所有参数方式二:$@"
python@ubuntu:~/shellscrip$ ./test.sh a b c
获取文件名:./test.sh
获取参数个数:3
获取第一个参数:a
获取第二个参数:b
获取第三个参数:c
获取所有参数方式一:a b c
====================
获取所有参数方式二:a b c
$* 和 $@ 的区别:
1 #!/bin/bash
2 echo "\$* 遍历:"
3 for i in " $*";do
4 echo ${i}
5 done
6 echo "\$@ 遍历:"
7 for i in "$@";do
8 echo $i
9 done
执行结果:
python@ubuntu:~/shellscrip$ ./test.sh a b c
$* 遍历:
a b c
$@ 遍历:
a
b
c
五、算数运算符
1.不支持简单算数运算
python@ubuntu:~/shellscrip$ h=1+2
python@ubuntu:~/shellscrip$ echo $h
1+2
2.可通过命令来实现
方式一:
表达式和运算符之间要有空格
python@ubuntu:~/shellscrip$ echo `expr 1 + 2 `
3
python@ubuntu:~/shellscrip$ echo `expr 1 \* 2`
2
python@ubuntu:~/shellscrip$ echo `expr 1 / 2`
0
python@ubuntu:~/shellscrip$ echo `expr 1 % 2`
1
python@ubuntu:~/shellscrip$ echo `expr 1 - 2`
-1
方式二:
python@ubuntu:~/shellscrip$ echo $((1+1))
2
python@ubuntu:~/shellscrip$ echo $((1-1))
0
python@ubuntu:~/shellscrip$ echo $((1*2))
2
python@ubuntu:~/shellscrip$ echo $((2/4))
0
python@ubuntu:~/shellscrip$ echo $((2%4))
2
方式三:
python@ubuntu:~/shellscrip$ echo $[1+4]
5
python@ubuntu:~/shellscrip$ echo $[1-4]
-3
python@ubuntu:~/shellscrip$ echo $[1*4]
4
python@ubuntu:~/shellscrip$ echo $[1/4]
0
python@ubuntu:~/shellscrip$ echo $[1%4]
1