Shell脚本学习之旅(1)— 创建第一个shell脚本

Shell脚本学习之旅(1)— 创建第一个shell脚本

一、什么是shell

GNU/Linux shell是一种特殊的交互式工具。它为用户提供了启动程序、管理文件系统中的文件以及运行在Linux系统上的进程的途径。
shell的核心是命令行提示符。命令行提示符是shell负责交互的部分。它允许你输入文本命令,然后解释命令,并在内核中执行。
shell包含了一组内部命令,用这些命令可以完成诸如复制文件、移动文件、重命名文件、显示和终止系统中正运行的程序等操作。

所有Linux发行版默认的shell都是bash shell。bash shell的名称就是针对Bourne shell的拼写所玩的一个文字游戏,称为Bourne again shell。
在Linux系统上,通常有好几种Linux shell可用。不同的shell有不同的特性,有些更利于创建脚本,有些则更利于管理进程。如图所示
在这里插入图片描述

当你将多个shell命令放入文件中作为程序执行时,这个文件就被称作shell脚本。在命令行上执行的任何命令都可放进一个shell脚本中作为一组命令执行,这为创建那种需要把几个命令放在一起来工作的工具提供了便利。
使用cat /etc/shells命令可以查看当前系统支持的shell工具。

[william@ubuntu:~]$ cat /etc/shells 
/bin/sh
/bin/bash
/sbin/nologin
/bin/dash
/bin/tcsh
/bin/csh
/bin/ksh
[william@filesrv:~]$

二、执行多个命令

可以把两个命令放在同一行中一起运行,彼此间用分号隔开即可。
date命令先运行,显示了当前日期和时间,后面紧跟着who命令的输出,显示当前是谁登录到了系统上,我这里第一个是本地登录的,第二个是通过SSH登录的。
在这里插入图片描述
使用这种办法就能将任意多个命令串连在一起使用了,只要不超过最大命令行字符数255就行,但是在每次运行之前,都必须在命令提示符下输入整个命令。我们可以将这些命令组合成一个简单的文本文件,这样就不需要在命令行中手动输入了,在需要运行这些命令时,只用运行这个文本文件就行了。

三、创建shell脚本

新建test1文件,然后输入以下下内容:

#!/bin/bash
# This script diaplays the date and who's logged on
date
who

在创建shell脚本文件时,必须在文件的第一行指定要使用的shell。其格式为:#!/bin/bash
在通常的shell脚本中,井号#用作注释行, shell并不会处理shell脚本中的注释行。然而,shell脚本文件的第一行是个例外, #后面的惊叹号会告诉shell用哪个shell来运行脚本。
在这里插入图片描述
我们现在运行脚本,会发现运行失败,这是因为bash shell不能找到这个脚本文件
在这里插入图片描述
shell会通过PATH环境变量来查找命令,我们查看一下PATH环境变量,
在这里插入图片描述
可以看到,并没有我们当前所在的目录,我们可以采取如下两种方法来运行这个shell脚本

  • 将shell脚本文件所处的目录添加到PATH环境变量中;
  • 在提示符中用绝对或相对文件路径来引用shell脚本文件。

我们使用第二种方法执行shell脚本,我们可看到,shell已经找到了这个脚本文件,但是我们没有执行这个问价的权限
在这里插入图片描述
查看一下文件的权限,可见,当前用户并没有可执行权限
在这里插入图片描述
我们使用如下命令为test1添加可执行权限,u表示当前用户,+表示添加权限,x表示可执行权限,合起来就是为当前用户添加可执行权限,这样我们就可以执行了
在这里插入图片描述

四、打印输出

我们在使用shell脚本的时候,经常会打印输出一些文本消息来作为提示,我们可以通过echo命令来实现这一点,在echo命令后面加上一个字符串就行了,
注意:默认情况下,不需要使用引号包括字符串,但有时在字符串出现引号就比较麻烦了,如下所示:
在这里插入图片描述
这样我们就需要用单引号或双引号来划定文本字符串,如果在文本中用到了 他们,就需要使用另一种将字符串划定起来,这样所有的引号就可以正常输出了
在这里插入图片描述
将脚本修改为如下所示

#!/bin/bash
# This script diaplays the date and who's logged on
echo The time and date are:
date
echo "Let's see who's logged into the system:"
who

运行如下所示
在这里插入图片描述
当我们想把文本字符串和命令输出显示在同一行时,我们使用echo-n参数即可,如果我们想要在字符串尾部添加一个空格,就需要用到引号,修改为如下所示,

#!/bin/bash
# This script diaplays the date and who's logged on
echo -n "The time and date are: "
date
echo "Let's see who's logged into the system:"
who

运行如下所示
在这里插入图片描述
echo是shell脚本中与用户交互的重要工具。

五、附录

参考书籍:Linux命令行与shell脚本编程大全(第3版)
在这里插入图片描述

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值