bash基础01-变量 数据类型 算数运算 逻辑运算

1、变量定义

echo hello word   #hello word,echo命令用于向屏幕输出内容

a=1   echo $a    #1

a=hello word    echo $a   #报错, a='hello word'/a="hello word"   echo $a  #hello word

a="hello word"   echo 'abc $a'   #abc $a

a="hello word"   echo "abc $a"  #abc hello word

a="hello"   echo $a_1   #什么也没输出,相当于把a_1当成一个变量,直接输出一个没有定义的变量,返回空

a="hello"  echo $a _1  $hello _1

a="hello"   echo ${a}_1  $hello_1    ,echo ${a}严谨的引用变量a的方法

  • = 左右两边不能有空格
  • 如果内容有空格,需要使用单引号或者双引号
  • 双引号支持转义 $开头的变量会被自动替换

2、 预定义变量

echo ${PWD} /$PWD   #输出pwd命令的东西

echo $USER  #输出当前用户的用户名

echo $PATH  #输出环境变量

echo  $HOME #输出home目录

3、数组变量

数组定义 :b=(1 2 3 4 5) #元素之间通过空格隔开

b=(1 2 3 4 5)echo $b   #1,只能输出第0个元素

b=(1 2 3 4 5)   echo ${b[*]}/echo ${b[@]}   #1 2 3 4 5,输出数组的所有元素

b=(1 2 3 4 5)   echo ${b[2]}  #3,输出数组的第3个元素

b=(1 2 3 4 5)   echo ${b[-1]}  #5,输出数组的倒数第一个元素

b=(1 2 3 4 5)   echo ${#b[*]}/echo ${#b[@]}  # 5,输入数组中元素的个数

反引号的用处

a=`ls`  echo $a   #输出ls命令的内容,`ls`ls加上反引号,键盘上在上角数字1旁边的键

a=(`ls`)   echo ${a[*]}  /echo ${b[@]}   #将ls命令输出的内容写入一个数组,通过取出数据元素的方式取出每个元素

4、特殊字符的使用

1)单引号和双引号:双引号用于括起一段字符串值,支持$var形式的变量替换,单引号也表示其内容是字符串值,不支持转义

2)\ 反斜杠:某些情况下表示转义

echo "a\nbb"     #a\nbb

echo -e "a\nbb"   

#a

bb    #-e开起了转义模式,将\n转义成了换行

3)$(ls)表示执行ls后的结果,与``类似。不过可以嵌套

echo  $(ls)   #输出ls命令的内容,不是所有linux系统都支持                                             

echo `ls`         #输出ls命令的内容                                                                                

4)``反引号:用法比较独特,代表命令的输出,非常有用                                                                                                       

5)$(())对变量进行操作,必须是双括号

6)(())是整数扩展。把里面的变量当作整数去处理

a=5

((a=a+5))

echo $a  #10

7) ({1..10})等价于seq 1 10,表示1到10

 

8) echo $?

a=2;b=3;((a<b));echo $?  #0,echo $?判断前面的操作是true(0)还是false(非0的数字)

a=2;b=3;((a>b));echo $?  #1,echo $?判断前面的操作是true(0)还是false(非0的数字)

ls test.txt;echo $?   #0,如果当前目录下有test.txt这个文件就为true返回0

ls fff;echo $? #2,当前目录下没有fff这个文件就为false返回非0

9)一些小数的运算

echo $((2/3))    #0

awk "BEGIN{print 2/3}"   #0.666667

5、变量类型

字符、数字、Boolean

6、字符串的切片

s="hello from testerhome";echo ${s:6}   #from testerhome,从开始位置去掉6位

s="hello from testerhome";echo ${s:6:4}   #from   

s="hello from testerhome";echo ${#s}   #21,这个字符串的长度

s="hello from testerhome";echo ${s#hel}   #lo from testerhome,掐头

s="hello from testerhome";echo "${s#*o}"   # from testerhome,掐掉o及其之前的内容

s="hello from testerhome";echo "${s#*m}"   # testerhome,掐掉m及其之前的内容

s="hello from testerhome";echo "${s##*m}"   # e,贪婪匹配,匹配到m及其前面的都去掉

s="hello from testerhome";echo "${s##*o}"   #me,贪婪匹配,匹配到o及其前面的都去掉

s="hello from testerhome";echo "${s%home}"   #hello from tester,去尾,从后面匹配,匹配到了home去掉

s="hello from testerhome";echo "${s%o*}"  #hello from testerh

s="hello from testerhome";echo "${s%%o*}"  #hell,去尾,贪婪匹配,从最后开始匹配到最前面一个o,将它及其后面的去年

s="hello from testerhome";echo  ${s/testerhome/wulala}   #hello from wulala,替换字符串中的内容

7、逻辑计算:

-eq: 相等 [ 2 -eq 2 ];echo $?  #0,2=2为真,注意空格必须有

-ne:不等于 [ 2 -ne 2 ];echo $?  #1,2不等于2为false所以返回非0

-gt:大于 [ 2 -gt 2 ];echo $?  #

-ge:大于等于 [ 2 -ge 2 ];echo $?  #

-lt:小于 [ 2 -lt 2 ];echo $?  #

-le:小于等于 [ 2 -le 2 ];echo $?  #

-a :逻辑与  [ 2 -le 2 -a 3 -ge 2 ] ;echo $?  #0,2小于等于2并且3大于等于3

-o :逻辑或 [ 2 -le 2 -o 3 -ge 2 ]  #0,2小于等于2或者3大于等于3

8、shell内置判断

-e  file如果文件存在,则结果为真 ,[  -e  test ];echo $?   #0,如果test这个文件存在就为true返回0 

-d 如果文件是一个子目录 ,则结果为真

-f 如果文件是一个普通文件,则结果为真

-r 如果文件可读,则结果为真

-s 如果文件的长度不为0,则结果为真

-w 如果文件可写,则结果为真

-x 如果文件可执行,则结果为真

 

 

 

 

 

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值