一、变量
1.变量的定义:
a. 变量与变量内容以=连接,等号两边不能有空格。 a=1
b. 变量名称只能是英文和数字,但开头字符不能是数字。my2name=liyuanyuan
c.如果变量内容有空格需要使用单引号或者双引号,双引号内的特殊字符可以保持原有的本性,如果是单引号内的特殊字符则仅为一般字符,所以如果是字符,最好用双引号。 d="hello from liyuanyuan"
e=`ls`(在``之内的命令将会先被执行)
d.取消变量用“unset 变量名” 。unset my2name
e.为变量增加变量内容时,可以用$变量名或者${变量}累加内容。d="$d"2018
2.变量的使用:
a.变量的显示用:echo $a或者echo ${a},使用后者更为严谨。比如a="hello";echo $a_1;输出的内容为空,因为a_1不存在;如果echo ${a}_1则输出为hello_1
b.变量没有定义时也可以使用,默认为空值
3.预定义变量:
pwd 是一个命令 表示当前的目录
echo $PWD 是一个预定义的变量,PWD=pwd
echo $PWD
echo $USER 当前用户名
echo $HOME 当前用户的家目录
echo $PATH 指的是环境变量
4.数组变量:
使用()来定义数组变量,内容中间用空格隔开,如array=(1 2 3 4 5), echo ${a[*]}或者echo ${a[@]}都是显示全部数组,
5.特殊符号的使用
a. 特殊符号的使用
反斜杠,一般情况下将特殊字符变成一般字符,转义符
例子:
echo -e "a
bb"
-e 是开启转义模式
如果没有 -e
echo "a
bb"
想要打印一个 a"bb
echo -e "a"bb"
echo "a\b"
b. $(ls) 与 ls
这两个都是用作命令替换的,换言之就是重组命令行的
执行顺序是先执行反引号里的命令,然后将其结果替换出来,再重组成新的命令行
举例:
echo my dir is ls
echo my dir is $(ls)
在操作上,这两个东西都能达到相应的效果
对比:
- ``比较容易和''搞混
- $()的弊端是,不是所有的类unix系统都支持,但是``都支持
6.变量的类型
字符串 a="liyuanyuan"
数字a=3
布尔a=true
7.数字型变量的操作
a.只能进行整数计算a=5;echo $((a+5));
b.可以对数字型变量进行更新a=5;((a=a+5));echo $a; echo $((a++));
8.字符串的操作
a.对字符串进行取值${value:offset:length},对于变量value从第offset个字符截取,长度为length s="hello from liyuanyuan";echo ${s:6}输出:from liyuanyuan echo ${s:6:4}输出:from
b.获取字符串长度${#value} echo ${#s} 输出:21
c.获取数组元素的个数array=(a b c d e);echo ${#array[@]}
d.字符串掐头:echo “${s#hello}”;输出:from liyuanyuan echo “${s#*o}”输出:from liyuanyuan echo “${s##*o}” 输出m liyuanyuan 两个#号为贪婪匹配,一直匹配到最后一个相应字符 ps:输出后面加上双引号,就是将匹配后的内容当作一个整体。
f.字符串去尾:echo "${s%liyuanyuan}" 输出:hello from echo "${s%%y*}" 输出:hello from li
h.字符串的替换:${s/pattern/string} echo ${s/liyuanyuan/testerhome} 输出:hello from testerhome
${var/#pattern/replacement}:查找var变量存储的字符中最开始处能够由pattern匹配到的内容,并替换为replacement;
${var/%pattern/replacement}:查找var变量存储的字符中最后位置能够由pattern匹配到的内容,并替换为replacement;
i.查找删除:
${var/pattern}:查找var变量存储的字符中第一次由pattern匹配到的内容,并删除;
${var//pattern}:查找var变量存储的字符中所有能够由pattern匹配到的内容,并删除;
${var/#pattern}:查找var变量存储的字符中最开始处能够由pattern匹配到的内容,并删除;
${var/%pattern}:查找var变量存储的字符中最后位置能够由pattern匹配到的内容,并删除;
g.字符串大小写转换
${var^^}:把var变量中的所有小写字母,统统替换为大写;
${var,,}:把var变量中的所有大写字母,统统替换为小写;
${var~~}:把var变量中的所有大写字母,统统替换为小写,小写的统统替换为大写的
9.布尔变量
a=true;echo $? 输出:0 b=false;echo $? 输出:0,因为她是字符串,如果输入false;echo $? 则输出:1
10.算术判断
逻辑判断
ge 大于等于
eq 等于
ne 不等于
gt 大于
lt 小于
le 小于等于
格式规范:中括号里面的内容和中括号,以及里面的内容中间必须有空格
11.字符串比较
a.比较两个字符串内容是否相同
b.判断字符串是否为空,-n为空,-z不为空
12.逻辑判断
-a 等同于逻辑与,等价为&&
-0 等同于逻辑或,等价为||
13.内置判断
-e file 如果文件存在则为真
-d file 如果文件是一个子目录则为真
-f file 如果文件是一个普通文件夹则为真
-r file 如果文件是一个可读文件则为真
-s file 如果文件的长度不为0则为真
-w file 如果文件可写则为真
-x file 如果文件为可执行,则为真
PS:which命令
用于查找并显示给定命令的绝对路径
例子:
which python