Shell脚本

本文介绍了Shell的基础知识,包括Shell的定义和用途,如何编写打印helloworld的脚本以及执行方法。接着详细讲述了Shell中的变量,如用户自定义变量、位置变量、预定义变量和环境变量的使用。此外,还讲解了Shell脚本中的注释和功能性语句,特别是`read`命令的不同用法。
摘要由CSDN通过智能技术生成

一、认识 Shell

1.1什么是 Shell

Shell 本质上是 linux 命令,一条一条命令组合在一起,为了实现某一个目的,就变成了shell脚本。它从一定程度上 减轻了工作量,提高了工作效率。
在这里插入图片描述
Shell 是一个命令行解释器(不同于gcc是编译器),将用户命令解析为操作系统所能理解的指令,从而实现用户与操作系统的交互。

1.2使用 Shell 打印 “hello world”

直接使用 vim编辑器创建一个以 .sh 文件后缀的文件
且程序第一行必须以  #!/bin/bash  开头,告诉系统是用 bash 来执行该文件的程序

在这里插入图片描述
在这里插入图片描述

1.2.1执行 Shell 脚本的方法

法一:
写好 Shell 脚本后,我们发现这个以 .sh 为后缀名的文件没有可执行权限

在这里插入图片描述

那就给这个文件加上可执行权限之后,再执行   chmod +x test.sh

在这里插入图片描述
在这里插入图片描述

法二:

还可以直接使用 bash 来执行 .sh 文件
在这里插入图片描述

二、Shell 中的变量

1.用户自定义变量

1.1变量的命名

和 C语言一样的规则,由字母,数字,下划线组成,不能以数字开头

1.2变量的数据类型

在 Shell脚本中的没有具体的数据类型,所有数据都被理解为字符串

1.3变量的赋值

  变量名=数据
  注意:等号两边不能有空格 
  
  赋值完成后不需要以分号结束
  
  写数据时可以直接赋值,也可以使用单引号或双引号,但双引号和单引号有区别
       单引号:不能引用其他变量的值
       双引号:可以引用其他变量的值

在这里插入图片描述

1.4变量的引用

1. $变量名
2. ${变量名}

1.5变量的删除

 unset 变量名
 注意:在 Shell 脚本中变量定义出来都是以全局变量来理解

在这里插入图片描述

2.位置变量

由系统提供的参数称为位置变量,和命令行参数具有相同的效果,即一开始运行程序时传递的参数

$0 :   脚本文件名
$1 :   命令行第一个参数
$2 :   命令行第二个参数
$3 :   命令行第三个参数
..
$n :   命令行第 n个参数
注意:这里大于 9 的数调用需要加 { },不然程序会认为是一位

在这里插入图片描述
在这里插入图片描述

3.预定义变量

预定义变量是在 Shell 一开始就定义了的变量

$# :  命令行参数的个数,除去 $0
$* :  所有命令行参数 ,出去 $0
$@ :  和 $* 相同的用法
$? :  获取上一条命令退出的状态值  (Shell中 0为真,1为假)
$$ :  获取当前进程的 pid 号

在这里插入图片描述

4.环境变量

环境变量用于所有的用户进程

常用的环境变量
    PATH  		命令所示路径,以冒号为分割;
    HOME  		打印用户家目录;
    SHELL 		显示当前Shell类型;
    USER  		打印当前用户名;
    ID    		打印当前用户id信息;
    PWD   		显示当前所在路径;
    TERM  		打印当前终端类型;
    HOSTNAME    显示当前主机名;
    PS1         定义主机命令提示符的;
    HISTSIZE    历史命令大小,可通过 HISTTIMEFORMAT 变量设置命令执行时间;
    RANDOM      随机生成一个 0 至 32767 的整数;
    HOSTNAME    主机名
    
设置环境变量的方法
    echo        显示指定的环境变量
    export      设置新的环境变量
    env         显示所有的环境变量
    set         显示所有本地定义的 Shell 变量
    unset       清除环境变量

三、Shell 中的语句

1.说明性语句(代码注释)

在代码中起到解释作用,和 c语言 的注释相同效果

1.1注释一行

#  :   注释 # 后的一行内容

1.2注释代码块

1. :<<EOF
    	   代码块
    EOF
2. :<<?
           代码块
   ?

在这里插入图片描述
在这里插入图片描述

2.功能性语句

2.1输入语句 read

从键盘获取数据

read 变量名 : 什么都不提示,将输入的数据存放到变量中

read -p : 在输入的时候可以携带提示语句
	read -p  "请输入一个数: " 变量名
	 
read -s : 静默输入,即在输入的时候不显示输入的内容
	read -s 变量名
	
read -n : 在输入的时候限定输入位数,位数一旦达到则立即停止输入
	read -n 变量名
	
read -t : 在输入的时候限定输入的时间,超过时间则立即停止输入
	read -t 限定的秒数变量

这里拿 read -p 举例,其他的大家可以自己尝试
在这里插入图片描述
在这里插入图片描述

注意

read 后面可以同时跟多个变量,当输入的变量数比自定义的变量数多,是如何存放的呢?
在这里插入图片描述
在这里插入图片描述
这里我们发现,超出的数都赋值给了最后一个变量

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值