Linux Shell编程

Linux Shell编程

  • Linux Shell介绍
  • 变量
  • 功能语句
  • 控制语句:顺序,条件,循环
  • 数组
  • 函数
  • 综合案例

Linux Shell介绍

1、是什么

​ Shell是一个命令行解释器程序规范,他接受应用程序/用户命令,然后调用操作系统内核完成相关的功能。它是用户使用 Linux 的桥梁。简单来说Shell 是指一种应用程序,这个应用程序提供了一个界面,用户通过这个界面访问操作系统内核的服务。也可以这样认为,linux中的shell就是linux内核的一个外层保护工具,并负责完成用户与内核之间的交互

​ Shell还是一个功能相当强大的编程语言,易编写、易调试、灵活性强。 shell脚本就是一种专门使用shell编写的脚本程序,以.sh结尾的文件(xxx.c)。它虽然没有C++、Java、Python等一系列高级语言功能强大,但是在服务器运维领域以及嵌入式开发领域,shell脚本具有举足轻重的地位。

​ shell脚本编程如同其他编程语言的一样,只要有一个能编写代码的文本编辑器和一个能解释执行的脚本解释器()(shell成熟性)就可以运行了。

​ shell是一个linux程序,我们使用这个程序,可以输入一些命令,完成一些系统操作。当然shell也是一种语言,编写的shell脚本(.sh),可以放到shell程序中运行。

Shell主要功能:

1.命令解释:解释并执行用户输入的命令

2.脚本编写:允许用户编写脚本(脚本文件),以自动化重复性任务

3.进程控制:管理进程的启动、终止以及监控

4.文件管理:提供文件创建、删除、移动、复制等操作

5.输入输出重定向:运行用将命令的输出重定向到文件或者从文件读取输入

总结:

1.shell是操作系统的最外层,是一个用户跟操作系统之间交互的命令解释器,介于操作系统和用户之间,负责解释命令行;

2.大多数linux默认的shell命令解析器器bash /bin/bash

3.shell独立于内核,链接操作系统内核和应用程序的桥梁,shlle是内核周围的外壳

2 Linux常见的shell程序

  1. 常见的shell

    linux有很多shell的实现,常见的有**/bin/bash /bin/sh /bin/dash** bin/rbash

  2. ubuntu默认的shell是那个

​ cat /etc/shells

3.sh与shell的关系: sh是链接到dash shell程序上面

​ ls -l /bin/ | grep sh

​ ls -l /bin/ | grep rbash

3、shell语言怎么用

⽅法 1:
1、建⽴XX.sh⽂件(shell脚本)
2、赋予我们shelll⽂件执⾏权限 chmod 744 hello.sh
3、执⾏shell⽂件。 ./hello.sh
⽅法 2:
1、建⽴.sh⽂件
2、bash + XX.sh /sh + xx.sh
#!/bin/bash
echo “hello,world”    #Shell 的 echo 指令是用于字符串的输出。命令格式:echo str

指定解释器:#!/bin/bash 指定了使用 Bash 作为脚本的解释器。Bash 是 Unix-like 系统中常见的一种 Shell 解释器。在执行脚本时,操作系统会根据 shebang 语句中的路径找到 Bash 解释器,并使用它来解释执行脚本内容;

特定语法支持:Bash 解释器相比其他 Shell 解释器,例如sh、dash 等,提供了更多的功能和语法扩展。因此,通过使用 #!/bin/bash,可以确保脚本中使用的特定 Bash 语法和功能能够被正确解释和执行;

兼容性:在大多数 Unix-like 系统中,Bash 解释器都是默认安装的,并且脚本中使用的许多常见 Shell 语法和命令都是基于 Bash 的。使用 #!/bin/bash 可以提高脚本的可移植性,并确保在不同系统上都能正确执行;

后面要讲的都是shell语言。

三、变量

1、预定义变量与位置变量

$0 : shell 脚本的名字
$# : 位置参数的个数[不包括shell脚本本身]
$?:上⼀条命令的执⾏状态或获取shell函数的返回值
	注:0代表状态为真,⾮0代表状态为假
$$:获得我们shell脚本的进程号

$1-$9 : 第⼀个参数~第九个参数,空格做为分隔符
$*:所有的位置参数
$@:所有的位置参数

#!/bin/bash
# 系统定义好的一些变量,直接使用,不用定义
echo "获取脚本的名称$0"
echo "获取脚本的个数$#"
echo "获取上一个命令的执行结果$?"
echo "获取执行shell脚本的进程号$$:"
echo "获取第一个位置的参数$1"
echo "获取第5个位置的参数$5"
echo "获取第9个位置的参数$9"
echo "获取所有位置的参数$*"
echo "获取所有位置的参数$@"

2、⽤户⾃定义变量

只包含字母、数字和下划线: 变量名可以包含字母(大小写敏感)、数字和下划线 _,不能包含其他特殊字符。
不能以数字开头: 变量名不能以数字开头,但可以包含数字。
避免使用 Shell 关键字: 不要使用Shell的关键字(例如 if、then、else、fi、forwhile 等)作为变量名,以免引起混淆。
使用大写字母表示常量: 习惯上,常量的变量名通常使用大写字母,例如 PI=3.14。
避免使用特殊符号: 尽量避免在变量名中使用特殊符号,因为它们可能与 Shell 的语法产生冲突。
避免使用空格: 变量名中不应该包含空格,因为空格通常用于分隔命令和参数。
  • 特点:

    • 变量没有类型,不需要定义,直接使⽤,所有的内容被解释为字符串

      name=“zs”

  • 说明:

    • 在shell中引⽤⼀个变量必须要加$,

      $name

    • 在shell中,对变量赋值的时候,"="两边不能有空格

    • 单引号引⽤的数据全部会转换为字符串

  • 示例:

    str="hello world"
    my_data=$str
    echo "my_data = $my_data"
    

3、字符串操作

字符串是shell编程中最常用最有用的数据类型(除了数字和字符串,也没啥其它类型好用了),字符串可以用单引号,也可以用双引号,也可以不用引号。

#!/bin/bash
#字符串是shell编程中最常用最有用的数据类型(除了数字和字符串,也没啥其它类型好用了),
#字符串可以用单引号,也可以用双引号,也可以不用引号。
jsn=jsn
str="wbd$jsn"
echo $str

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

#双引号里可以有变量
#双引号里可以出现转义字符
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

#获取字符串长度
string1="abcd"
echo ${
   #string1}   # 输出 4

#提取子字符串 从0开始
string2="runoob is a great site"
echo ${string2:1:4} # 输出 unoo

#查找子字符串
#查找字符 i 或 o 的位置(哪个字母先出现就计算哪个): 从1
string3="runoob is a great site"
echo `expr index "$string3" io`  # 输出 4

四、功能语句

1、echo

​ Shell 的 echo 指令与 PHP 的 echo 指令类似,都是用于字符串的输出。命令格式:

#!/bin/bash
#显示转义字符
str=wbdjsn
echo \"It is a test$str\"
#换行  必须用“”
echo -e "\"It is a \n test $str\""

echo "you are gay!" > 1.txt

2、printf(类似于c标准io中printf)

printf 命令模仿 C 程序库(library)里的 printf() 程序。

printf 由 POSIX 标准所定义,因此使用 printf 的脚本比使用 echo 移植性好。

printf 使用引用文本或空格分隔的参数,外面可以在 printf 中使用格式化字符串,还可以制定字符串的宽度、左右对齐方式等。默认的 printf 不会像 echo 自动添加换行符,我们可以手动添加 \n

printf 命令的语法:

printf
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值