Linux Shell script学习记录1——简介、运行、变量、字符串

零之前言

对于Linux用多了,一次性启动多个文件感觉有些不方便,于是感觉有必要学习一下shell脚本的编程,这样对于使用一些多文件的项目可以自己编写Shell然后执行,此处的Shell是指Bourne Shell或者Bourne Again Shell。这两者就是常见的.sh.bash这两种文件的解释器。说道解释器,你就应该能把这个shell理解为像Python一样的语言了,只不过它是用户与内核沟通的桥梁。
本记录是在边学习边记录,并不是像以前那样学完了一段时间后再进行总结,所以可能错误会更多,希望读者不要在我这一篇文章上吊死。

一.前言——Shell

Shell 脚本(shell script),是一种为 shell 编写的脚本程序。
业界所说的 shell 通常都是指 shell 脚本,但读者朋友要知道,shell 和 shell script 是两个不同的概念。
由于习惯的原因,简洁起见,本文出现的 “shell编程” 都是指 shell 脚本编程,不是指开发 shell 自身。

常见的shell种类有:

  • Bourne Shell(/usr/bin/sh或/bin/sh)
  • Bourne Again Shell(/bin/bash)
  • C Shell(/usr/bin/csh)
  • K Shell(/usr/bin/ksh)
  • Shell for Root(/sbin/sh)
  • 他们的区别(搬运菜鸟教程里的一则)

在这里插入图片描述

二.新建与运行脚本

1.新建脚本文件并写入内容:

gedit a.sh & gedit b.bash

分别写入:
echo "Hello SH" echo "Hello Bash"

2.修改权限:

chmod +x a.sh b.bash

当然,给777的权限也行。

3.运行:

① 你可以像Python那样,确定解释器再运行,比如:
sh a.sh 或者给出解释器的全局路径 /bin/sh a.sh
② 或者是在脚本里的第一行,写上解释器:
#!/bin/bash 然后直接运行 ./a.sh
③或者全省了吧,linux默认了打开方式: ./a.sh
以下是运行结果,我们可以看到,使用echo 输出了我们的命令。
在这里插入图片描述

三.变量

1.声明与使用

声明变量直接如同python那样 xx = xx 即可,且变量名的定义有以下规则:

  • 命名只能使用英文字母,数字和下划线,首个字符不能以数字开头。
  • 中间不能有空格,可以使用下划线(_)。
  • 不能使用标点符号。
  • 不能使用bash里的关键字(可用help命令查看保留关键字)。

而使用已声明的变量则是:${xx} 即美元符号加大括号,当然你可以不使用大阔号,但容易出现‘粘连现象’就是把变量名后的文本也被当成了变量名的一部分,所以推荐给每一个变量都添加大括号。
** 注意 赋值的等号左右别加空格**
以下下是个错误例子:

name = "Hello"
echo ${name}

正确写法:

name="Hello"
echo ${name}

2.只读变量

在赋值后,直接添加readonly关键字即可,之后所有对其修改的代码均会报错。
a.sh: 3: a.sh: name: is read only

name="runoob.com"
readonly name
name="233"
echo ${name}

3.删除变量

对于变量的删除,直接使用unset关键字,就不演示了。

4.环境变量

直接搬运,并没有说如何申明,应该是以后再说的。
运行shell时,会同时存在三种变量:

  1. 局部变量 局部变量在脚本或命令中定义,仅在当前shell实例中有效,其他shell启动的程序不能访问局部变量。
  2. 环境变量 所有的程序,包括shell启动的程序,都能访问环境变量,有些程序需要环境变量来保证其正常运行。必要的时候shell脚本也可以定义环境变量。
  3. shell变量 shell变量是由shell程序设置的特殊变量。shell变量中有一部分是环境变量,有一部分是局部变量,这些变量保证了shell的正常运行

四.字符串

shell的字符串和Python的有所不同,它区分单双引号:

1.单引号

菜鸟教程原话:
单引号字符串的限制:

  • 单引号里的任何字符都会原样输出,单引号字符串中的变量是无效的;
  • 单引号字串中不能出现单独一个的单引号(对单引号使用转义符后也不行),但可成对出现,作为字符串拼接使用。

对于其二,可以看看以下代码:
在这里插入图片描述

2.双引号

  • 双引号里可以有变量
  • 双引号里可以出现转义字符

3.拼接例子

直接搬运,就上面所述的那意思:

your_name="runoob"
# 使用双引号拼接
greeting="hello, "$your_name" !"
greeting_1="hello, ${your_name} !"
echo $greeting  $greeting_1
# 使用单引号拼接
greeting_2='hello, '$your_name' !'
greeting_3='hello, ${your_name} !'
echo $greeting_2  $greeting_3

4.字符串操作

①字符串长度

在变量名前加#,例如:

string="abcd"
echo ${#string} #输出 4
②提取字符串
string="runoob is a great site"
echo ${string:1:4} # 输出 unoo
③查找字符串

形如这样`expr index “$string” io `

string="runoob is a great site"
len=`expr index "$string" io`
echo ${len} # 输出 4
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

康娜喵

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值