第一个shell脚本

2 篇文章 0 订阅

1、建立一个.sh文件

扩展名sh代表的是shell,在linux中,扩展名只是为了帮助理解文件的类型,没有什么实际意义。
例如,建立一个名为test.sh的文件后打开,输入代码:

#!/bin/bash
echo "Hello World !"  #这是一条语句

注解:

  • 第 1 行的#!是一个约定的标记,它告诉系统这个脚本需要什么解释器来执行,即使用哪一种Shell;后面的/bin/bash就是指明了解释器的具体位置。注意除了第一行以外,其他的#后面跟随的内容均是注释。
  • 第 2 行的 echo 命令用于向标准输出文件(Standard Output,stdout,一般就是指显示器)输出文本。在.sh文件中使用命令与在终端直接输入命令的效果是一样的。

例如,可以再建立一个稍微复杂的shell脚本,输入代码:

#!/bin/bash
# Copyright (c) http://c.biancheng.net/shell/
echo "What is your name?"
read PERSON
echo "Hello, $PERSON"

注解

  • 第 5 行中表示从终端读取用户输入的数据,并赋值给 PERSON 变量。read 命令用来从标准输入文件(Standard Input,stdin,一般就是指键盘)读取用户输入的数据。
  • 第 6 行表示输出变量 PERSON 的内容。注意在变量名前边要加上$,否则变量名会作为字符串的一部分处理。

2、shell脚本文件的执行

2.1 将 Shell 脚本作为程序运行

[mozhiyan@localhost ~]$ cd demo                #切换到 test.sh 所在的目录
[mozhiyan@localhost demo]$ chmod +x ./test.sh  #给脚本添加执行权限
[mozhiyan@localhost demo]$ ./test.sh           #执行脚本文件
Hello World !                                  #运行结果

这种方式首先要给.sh文件一个执行权限,然后直接在命令提示符处输入这个文件的地址即可。

2.2 将shell脚本作为命令的参数传递给解释器

[mozhiyan@localhost ~]$ cd demo               #切换到 test.sh 所在的目录
[mozhiyan@localhost demo]$ /bin/bash test.sh  #使用Bash的绝对路径
Hello World !                                 #运行结果
[mozhiyan@localhost ~]$ cd demo
[mozhiyan@localhost demo]$ bash test.sh
Hello World !

其实上面两种方式在本质上是一样的,只不过第一种直接给出了解释器所在的位置,而第二种是给出命令,然后根据命令在环境变量中查找解释器的位置。

3、关于运行shell脚本的进程

3.1 了解进程

在linux中,每一个进程都有其唯一的ID(PID),这个ID被赋值给shell中的特殊变量“$$”中,通过输出这个变量,可以知道执行的命令所处的进程。
可以先写一个脚本文件check.sh:

#!/bin/bash
echo $$  #输出当前进程PID

输出各个进程:

[mozhiyan@localhost demo]$ echo $$
2861  #当前进程的PID
[mozhiyan@localhost demo]$ chmod +x ./check.sh
[mozhiyan@localhost demo]$ ./check.sh
4597  #新进程的PID
[mozhiyan@localhost demo]$ echo $$
2861  #当前进程的PID
[mozhiyan@localhost demo]$ /bin/bash check.sh
4584  #新进程的PID

可以看到,出现了多个进程。

3.2 在当前进程中运行shell脚本

引入一个新的命令——source 命令。source 是 Shell 内置命令的一种,它会读取脚本文件中的代码,并依次执行所有语句。你也可以理解为,source 命令会强制执行脚本文件中的全部命令,而忽略脚本文件的权限。
命令使用的格式:

source filename

或者可以简写

. filename

注意:简写的格式要和上面2.1中提到的直接在命令提示符处输入脚本文件地址的方式相区别!简写的方式中"."要和文件名隔开一个空格。
举例:

[mozhiyan@localhost ~]$ cd demo              #切换到test.sh所在的目录
[mozhiyan@localhost demo]$ source ./test.sh  #使用source
Hello World !
[mozhiyan@localhost demo]$ source test.sh    #使用source
Hello World !
[mozhiyan@localhost demo]$ . ./test.sh       #使用点号
Hello World !
[mozhiyan@localhost demo]$ . test.sh         #使用点号
Hello World !

上面的程序的执行就是在当前的进程中,我们可以检验一下:

[mozhiyan@localhost ~]$ cd demo
[mozhiyan@localhost demo]$ echo $$
5169  #当前进程PID
[mozhiyan@localhost demo]$ source ./check.sh
5169  #Shell脚本所在进程PID
[mozhiyan@localhost demo]$ echo $$
5169  #当前进程PID
[mozhiyan@localhost demo]$ . ./check.sh
5169  #Shell脚本所在进程PID
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值