目录
Shell 是一个用 C 语言编写的程序,它是用户使用 Linux 的桥梁。Shell 既是一种命令语言,又是一种程序设计语言
1怎样创建一个shell文件
创建一个名为test的shell文件:
进入文件后输入这个注释
这个内容是什么意思呢? 我先写了一个str的变量,赋值“hello world”的字符串
echo 就是在终端输出的意思 ,加上$的意思是我后面跟的是变量,不然就是一个普通的字符串
运行:
1.通过sh命令执行
例如:sh test.sh
2.通过bash命令执行
例如:bash test.sh
3.通过把文件修改为可执行的文件然后通过./文件命令.sh来执行
例如:./helloworld.sh(必须在当前目录下)
修改下权限
这下可以运行了
2.变量
变量不需要声明,初始化不需要指定类型
shell中数据类型都是String类,是动态数据类型
变量命名 1:只能使用数字,字母和下划线,且不能以数字开头
2:变量名区分大小写
3:建议变量的名称要通俗易懂 注意:变量赋值是通过等号(=)进行赋值,在变量、等号和值之间不能出现空格。 显示变量值使用echo命令( 加上$变量名,也可以使用${变量名}
可以看见变量两边要是出现了空格,颜色变成了白色,只是普通的字符串而已。
这里我们发现了下面这个出现了问题,name这个变量 并没有输出
因为他和后面的is连在了一块,识别的是$nameis;没有这个变量,输出就是空
会把$后所有相连内容看做一个变量直到出现了下一个$,${}表示值引用{}之中的内容分,对相连的内容做了一个区分
用花括号分开的内容就会识别成单独的变量
位置变量
shell规定的变量:$0...$n
$0永远表示脚本名称(所以脚本名称不算数,$0也不算第一个参数)
$表示获得第n个参数,参数是我们自己使用shell时传入的
$*获取所有参数
$#获取所有参数个数
获取的位数超过2位后记得加花括号
$11:你得到的结果只是$1加上了字符串1,${11}才是正确的格式
单引号和双引号
引号成对存在,如果有多个引号,连续的形成一对, 引号中使用其他引号,其他引号做字符串使用
单引号: 单引号里的任何字符都会原样输出,单引号字符串中的变量是无效的;
想要输出""符号怎么做到呢?,我先考虑用单引号括起、
这样是不是有点麻烦,双引号中有简单的写法
双引号:双引号里可以有变量 ,双引号里可以出现转义字符
字符串
获取长度 格式: ${#变量}
截取: 格式:${变量:开始位置:长度}
注意:
${str::5}:从0获取5个
${str:0}:从0获取到末尾
${str:2:5}:从第二位2开始获取5个
替换单个
格式:
${变量/旧/新}
注意:从左向右替换第一个,这里替换并不是原来的字符串本身上修改
替换所有
格式:${变量//旧/新}
注意:替换不会再原字符上进行修改,想要修改原字符串只能从新赋值
删除
从头开始删除:${变量#表达式}:匹配到的第一个删除
这里有一个需要注意的地方,如果表达式写成
结果没有改变
所以我们匹配删除的格式都必须按照从左往右的顺序写出来
${变量##表达式}:匹配最后一个删除
从尾开始删除:
${变量%表达式}:匹配第一个删除
${变量%%表达式}:匹配最后一个删除
注意:从未开始删除,表达式还是从左向右去写
删除不会再原字符上进行修改,想要修改原字符串只能从新赋值