testerhome学习笔记2_Bash基础

一、变量

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\nbb"
-e 是开启转义模式
如果没有 -e
echo "a\nbb"
想要打印一个 a"bb
echo -e "a\"bb"
echo "a\\b"

b. $(ls) 与 ls
这两个都是用作命令替换的,换言之就是重组命令行的
执行顺序是先执行反引号里的命令,然后将其结果替换出来,再重组成新的命令行
举例:
echo my dir is ls
echo my dir is $(ls)
在操作上,这两个东西都能达到相应的效果
对比:

    1. ``比较容易和''搞混
    2. $()的弊端是,不是所有的类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

 

posted @ 2018-12-11 17:48  viviianli  阅读(183)  评论(0编辑  收藏  举报