Shell系列(1) - shell脚本运行方式

149 阅读3分钟

「4月日新计划更文活动」

什么是shell?

Shell是连接用户(或者程序)和操作系统内部核心的接口。它是一个命令行解释器,用户通过输入命令来与操作系统进行交互。像Linux和Unix这样的操作系统都有内置的Shell。

什么是shell脚本?

Shell脚本是一种编程语言,类似于其他编程语言,它能够执行一系列的命令和操作。Shell脚本通常以.sh文件扩展名结尾,其中.sh表示这是一个Shell脚本。shell 和 shell script 是两个不同的概念

shell种类

  1. Bourne shell (sh):是UNIX系统中最早的Shell之一,它是基于Bourne shell语言设计的。
  2. C shell (csh):是一种UNIX shell,受C语言的语法启发。它具有命令历史记录、命令记录和和类似于C语言的控制结构。
  3. Korn shell (ksh):是Bourne shell的增强版本,具有更多的功能和命令。
  4. Bash shell (bash):是GNU操作系统中默认的shell,它是Bourne shell的升级版本。
  5. Z shell (zsh):是一种功能强大的shell,其功能包括命令自动补全、拼写检查和即时显示错误。
  6. Fish shell:友好的交互式shell
  7. PowerShell:Windows操作系统中的shell

如何查看系统默认shell ?

方法1:
root@localhost ~]# echo $SHELL
/bin/bash

##方法2:
[root@localhost ~]# grep root /etc/passwd
root:x:0:0:root:/root:/bin/bash
operator:x:11:0:operator:/root:/sbin/nologin

shell首行

第一行:
#!/bin/bash   ##指定解释器:由哪个程序来执行脚本内容;#!表示幻数
#! 是一个约定的标记,它告诉系统这个脚本需要什么解释器来执行,即使用哪一种 Shell。

注意:#!/bin/bash必须写在第一行,否则会被认为是注释

运行shell脚本方式

sh 方式

#如:脚本hello world.sh
sh hello world.sh 或者 bash hello world.sh    ##当脚本没有执行权限时

绝对路径调用

chmod +x /root/script.sh
#绝对路径的方式调用
 path/hello world.sh 或者 ./hello world.sh     ##绝对路径,或当前目录下

source 方式

source hello world.sh  或者 .hello world.sh 
#需要传递变量或函数时使用;这种方式会使用source或.号来读如指定shell文件
#并会把其他shell中的变量值或函数返回给父shell继续使用

##注意:只有source方式才能输出传递变量的值

shell脚本的开发规范

#!/bin/bash                                  ##指定解释器;#!表示幻数
#Date:2019/12/30                            #时间
#Author:seven                               #脚本人
#Describe:This script is for...             #描述
#Version:1.0                                #版本

# 脚本名称   最好以.sh结尾

#无论脚本变得多么复杂,但是,它仍然是顺序执行的命令的列表。

shell注释

单行注释

  • #开头的行就是注释,会被解释器忽略
# 我是一个注释

多行注释

  • 使用 :<< EOF 注释内容 EOF 符号注释
:<<EOF
我是注释
EOF
  • 使用 :<<! 注释内容 ! 符号注释
:<<!
我是一个注释
!
  • 使用 :<<' 注释内容 ' 符号注释
:<<' 
我是一个注释 
'