Shell脚本入门(一)

导读:本篇文章讲解 Shell脚本入门(一),希望对大家有帮助,欢迎收藏,转发!站点地址:www.bmabk.com

一. Shell 概述

Shell 是一个命令行解释器, 它接收应用程序/用户命令,然后调用操作系统内核。
在这里插入图片描述
Shell 还是一个功能相当强大的编程语言,易编写、易调试、灵活性强。
1. Linux 提供的Shell 解释器有

[atguigu@hadoop101 ~]$ cat /etc/shells 
/bin/sh 
/bin/bash 
/usr/bin/sh 
/usr/bin/bash 
/bin/tcsh
/bin/csh

2. bash 和 sh 的关系

[atguigu@hadoop101 bin]$ ll | grep bash 
-rwxr-xr-x. 1 root root 941880 5 月 11 2016 bash 
lrwxrwxrwx. 1 root root 4 5 月 27 2017 sh -> bash

3. Centos 默认的解析器是 bash

[atguigu@hadoop101 bin]$ echo $SHELL /bin/bash

第 2 章 Shell 脚本入门

1)脚本格式
脚本以#!/bin/bash 开头(指定解析器)
2)第一个 Shell 脚本:helloworld.sh
(1)需求:创建一个 Shell 脚本,输出 helloworld
(2)案例实操:

[atguigu@hadoop101 shells]$ touch helloworld.sh
[atguigu@hadoop101 shells]$ vim helloworld.sh 
在 helloworld.sh 中输入如下内容 #!/bin/bash 
echo "helloworld"

(3)脚本的常用执行方式
第一种:采用 bash 或 sh+脚本的相对路径或绝对路径(不用赋予脚本+x 权限)
sh+脚本的相对路径

[atguigu@hadoop101 shells]$ sh ./helloworld.sh 
Helloworld

sh+脚本的绝对路径

[atguigu@hadoop101 shells]$ sh/home/atguigu/shells/helloworld.sh
 helloworld

bash+脚本的相对路径

[atguigu@hadoop101 shells]$ bash ./helloworld.sh Helloworld

bash+脚本的绝对路径

[atguigu@hadoop101 shells]$ bash /home/atguigu/shells/helloworld.sh 
Helloworld

第二种:采用输入脚本的绝对路径或相对路径执行脚本(必须具有可执行权限+x)
①首先要赋予 helloworld.sh 脚本的+x 权限

[atguigu@hadoop101 shells]$ chmod +x helloworld.sh

②执行脚本
相对路径

[atguigu@hadoop101 shells]$ ./helloworld.sh Helloworld

绝对路径

[atguigu@hadoop101 shells]$ /home/atguigu/shells/helloworld.sh
 Helloworld

注意:第一种执行方法,本质是 bash 解析器帮你执行脚本,所以脚本本身不需要执行 权限。第二种执行方法,本质是脚本需要自己执行,所以需要执行权限。
【了解】第三种:在脚本的路径前加上“.”或者 source
①有以下脚本

[atguigu@hadoop101 shells]$ cat test.sh 
#!/bin/bash 
A=5 
echo $A

②分别使用 sh,bash,./ 和 . 的方式来执行,结果如下:

[atguigu@hadoop101 shells]$ bash test.sh 
[atguigu@hadoop101 shells]$ echo $A 

[atguigu@hadoop101 shells]$ sh test.sh 
[atguigu@hadoop101 shells]$ echo $A 
[atguigu@hadoop101 shells]$ ./test.sh 
[atguigu@hadoop101 shells]$ echo $A 

[atguigu@hadoop101 shells]$ . test.sh 
[atguigu@hadoop101 shells]$ echo $A 
5

原因:
前两种方式都是在当前 shell 中打开一个子 shell 来执行脚本内容,当脚本内容结束,则 子 shell 关闭,回到父 shell 中。
第三种,也就是使用在脚本路径前加“.”或者 source 的方式,可以使脚本内容在当前 shell 里执行,而无需打开子 shell!这也是为什么我们每次要修改完/etc/profile 文件以后,需 要 source 一下的原因。
开子 shell 与不开子 shell 的区别就在于,环境变量的继承关系,如在子 shell 中设置的 当前变量,父 shell 是不可见的。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/77006.html

(0)
小半的头像小半

相关推荐

极客之音——专业性很强的中文编程技术网站,欢迎收藏到浏览器,订阅我们!