学习大数据的第30天——shell编程基础(变量常量、字符操作、算数运算符)

学习大数据的第30天——shell编程基础(变量常量、字符操作、算数运算符)

shell编程知识点

shell是指一种应用程序,这个应用程序提供了一个界面,用户通过这个界面访问操作系统内核的服务

shell是用户与linux操作系统沟通的桥梁

注意事项:习惯其他编程语言的保存,ctrl+s保存代码 ,但是再shell编程中,ctrl+s另有特殊用处,
就是暂停该终端,也就导致你不能继续输入,要退出的话,只需按下ctrl+q

还有其他的特殊按键:

​ Ctrl + c 中止当前正在执行的程序。

​ Ctrl + d 相当于exit命令,退出当前会话。

​ Ctrl + z 将当前运行的程序放到后台运行。与运行时加 & 类似。

​ Tab 键 自动补全命令。

变量和常量
#!/bin/sh
str="12345678"
echo ${str}

#变量:程序执行过程中可以发生改变的量
#常量 程序执行过程不可以发生改变的量
#shell中针对常量没有明确的划分,只有一个统一的类型string
echo "helloworld"
echo helloworld
echo 10
echo 10.5
echo "10"
#变量必须初始化
#注意事项:只能使用数字,字母和下划线,且不能以数字开头。2、大小写敏感,3、代码要规范
#变量复制是通过=进行赋值,变量、等号、值之间不能出现空格,输出时要带上$
str="你好"
echo $str


#单引号和双引号的区别
# 1、单引号里的任何字符都会原样输出,单引号字符串中的变量是无效的
# 单引号字符串不能出现单独一个的单引号,但可以成对出现
# 2、双引号里可以有变量,也可以出现转义字符
name="tom"
str1="Hello "$name"!\n"
echo -e $str1
变量取值和赋值的注意事项
#!/bin/sh
#变量的取值和赋值(修改)
#shell没有声明只有初始化
#变量 和值之间不能出现空格
#shel中空格常用分隔符使用
x="ab cd"
echo $x

x=10
echo $x

echo "---------------"
name="zs"
echo $name

#this is zs
echo "this is $name"

#thisiszxis18
#识别变量的时候,没有变量不会报错,会找到一个空 输出空
#$表示识别变量,会按照变量的命名规则,向后一直识别
age=18
echo "thisis${name}is$age"

echo "thisis$name is18"
shell中特殊的变量——位置变量
#!/bin/sh
#特殊的变量(位置变量):shell中自带的变量
#位置变量等同与下表:0 1 2 3 4 5 6 7 8 9.....
#取值的时候能不能跳着取值? 可以跳着取值
echo $0 #有值  永远时当前的脚本名称。$0不在看作位置变量  $0的值来自当前的脚本名称
echo $1 
echo $3
echo $5
echo $9
echo ${10}
#$识别位置变量的时候,默认只能识别一位,需要加上大括号

echo $#   #表示位置变量的长度
echo $*   #表示位置变量的全部值

字符串的操作
#!/bin/sh
#可以获取到关键字,只要再等号右边,就是字符串,因为shell字符串默认都是string类型的,虽然颜色是黄色的,但是还是字符串
#如果加上单引号,颜色就变成红色,就确定是字符串,引号所包裹的内容,就是字符串
#双引号"":
x=echo
echo $x

#双引号"":
#输出结果,zs:"18"  (英文的双引号)一种解决方式,加入转义字符\
#x1="zs:“18”"
x1="zs:\"18\""
echo $x1

echo "=========================="

#单引号
#zs:"18"
y='zs:"18"'
#y='zs:\'18''   单引号中无论写什么,默认都是string(专治花里胡哨,$符号也不行)
name="zs"
echo 'thisis$name'
echo "thisis$name"

echo $y


#拼接字符串
name="runoob"
#使用双引号拼接
str="hello,"$name"!"
str1="hello,${name}!"
echo $str $str1
#单引号拼接
str2='hello,'$name' !'
str3='hello,${name}!'
echo $str2 $str3
echo "--------------------------"
#获取字符串的长度
string="abcd"
echo ${#string}

#提取子字符串
#不包含空格
string1="you are stardy"
echo ${string1:0:3}

echo "--------------------------"
#查找字符串
#查找字符i或者o的位置(那个字母先出现就计算哪个)
string2="runoob is a great site"
echo `expr index "$string2" io`

字符串额截取
#!/bin/sh
#  特殊符号:  #表示字符串的长度    *表示

#表示字符串的长度
#格式:${#变量名称}
str="abcdefg"
echo $str
echo ${#str}

#截取 ${变量名称:开始位置:长度}     含头不含尾
#截取 ${name:offset:length}

echo ${str:0:2}  # 输出结果ab  表示含头不含尾 下表从0开始
echo ${str:2:2}

#探究有没有在元数据上修改
echo $str #表示元数据没有被修改

#若如果我想要截取的结果呢?   我们可以将截取的结果赋值给str
#str=${str:0:2}
#echo $str

#如果想要截取整个数据,格式:${str::长度}
echo ${str::${#str}}   #${#str} 表示str的长度

字符串的替换和删除(从头删除和从尾删除)
#!/bin/sh
str="12345678912"
#替换单个
# ${str/旧/新}  只能替换第一次找到的,后面的替换不了
echo ${str/12/ab}

#若想要用替换用来删除字符串,只需将想要替换的字符用空字符来替换
echo ${str/2345678/""}

echo "============================"
#格式 ${str//旧/新}  //代表替换所有的旧的字符串
echo ${str//12/ab}


#删除 (不允许从中间删除)  很捞
#删除第一个 和 删除到末尾
#从头删除匹配第一个  格式: ${变量名称#表达式}
str="abc,def,gabc" #后面的abc删除不掉
#echo ${str#abc}

#echo ${str#def}  #删除不掉

#echo ${str#*,}  #结果 def,gabc
#删除从头开始依次匹配,一个#表示一旦匹配成功一次,并且第一次就开始删除

# ##表示 从头开始,连续的一次匹配,一旦匹配成功,最后一次就开始删除
#echo ${str##*,}   #gabc 

#总结,从头开始删除,得首先匹配第一个字符是否匹配,如果不匹配,就不行,可以使用*来进行筛选


#从尾删除  删除第一个和删除到最后一个
# 删除第一个 格式  ${str%,g}

#echo ${str%,gabc}
#echo ${str%,*}

#删除到最后一个 格式:${str%%,*}

echo ${str%%,*}   #结果abc

算术运算符
#!/bin/sh

#算数运算符
#shell中 默认不支持表达式,因为shell中都是string类型,到那时提供了一个命令可以识别表达式
#  expr 最常用 是一款表达式计算工具,使用 他能完成表达式的求值操作

#这里有很烦的地方   val=`expr 2 + 2` 和 val=`expr 2+2` 不同,第一个可以计算,但是第二个不行
# 就很捞,数字和算数表达式必须以空格隔开

val=`expr 2 + 2`

echo "两数之和为:$val"

#通常不这么写


echo `expr 2 + 2`

x=2
y=2
#想算x+y的值

echo `expr $x + $y`
echo `expr ${x} + ${y}`
echo `expr x + y`  #这里的xy当作字符串来计算的

#这样子显得很麻烦
# 有个简答的方法:
#格式  $[]
echo $[2+2]
echo $[2 + 2]
echo $[x + y]
echo $[$x + $y]
echo $[${x} + ${y}]

#$[] 不需要关心空格和反引号的问题,可以自动识别变量 所以以后直接使用 $[] 
# 至于expr 捞的不谈 
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值