前端学习 linux —— shell 编程

Posted mb6231a533e840b

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了前端学习 linux —— shell 编程相关的知识,希望对你有一定的参考价值。

前端学习 linux - shell 编程

​shell​​​ 原意是“外壳”,与 ​​kernel​​​(内核)相对应,比喻内核外的一层,是用户和内核沟通的桥梁。shell 有很多种,国内通常使用 ​​bash​​。

第一个 shell 脚本

创建 ​​hello-world.sh​​ 文件,内容如下:

test11@pjl:~/tmp$ vim hello-world.sh
#!/bin/bash
echo hello world

第一行指定 ​​shell​​ 的类型:

test11@pjl:~/tmp$ echo $SHELL
/bin/bash

Tip:通常约定以 ​​sh​​ 结尾。提前剧透:

test11@pjl:~/tmp$ sh hello-world.xx
hello world

执行 ​​sh​​ 文件,提示权限不够:

test11@pjl:~/tmp$ ./hello-world.sh
-bash: ./hello-world.sh: 权限不够
test11@pjl:~/tmp$ ll
-rw-rw-r-- 1 test11 test11 31 6 17 16:18 hello-world.sh

增加可执行权限:

test11@pjl:~/tmp$ chmod u+x hello-world.sh


test11@pjl:~/tmp$ ll
# hello-world.sh 变绿了
-rwxrw-r-- 1 test11 test11 31 6 17 16:18 hello-world.sh*

使用相对路径方式再次执行即可:

test11@pjl:~/tmp$ ./hello-world.sh
hello world

也可以使用绝对路径执行:

test11@pjl:~/tmp$ /home/test11/tmp/hello-world.sh
hello world

通过 ​​sh xx.sh​​ 无需可执行权限也可以执行。

Tip:下文还会使用 ​​bash xx.sh​​ 的执行方式。

首先删除可执行权限:

test11@pjl:~/tmp$ chmod u-x hello-world.sh
test11@pjl:~/tmp$ ll
总用量 20
-rw-rw-r-- 1 test11 test11 31 6 17 16:18 hello-world.sh
test11@pjl:~/tmp$ sh hello-world.sh
hello world

shell 注释

  • 单行注释:​​# 内容​
  • 多行注释:
:<<!
内容1
内容2
...
内容N
!

变量

系统变量

例如 ​​$SHELL​​ 就是系统变量:

test11@pjl:~/tmp$ echo $SHELL
/bin/bash

可以通过 ​​set​​​ 查看系统变量。例如过滤 ​​SHELL​​ 系统变量:

test11@pjl:~/tmp$ set |more |grep SHELL
SHELL=/bin/bash
SHELLOPTS=braceexpand:emacs:hashall:histexpand:history:interactive-comments:monitor

自定义变量

定义变量​​age​​并输出:

test11@pjl:~/tmp$ vim demo.sh

test11@pjl:~/tmp$ sh demo.sh
age=18
age=18

内容如下:

test11@pjl:~/tmp$ cat demo.sh
#!/bin/bash
age=18
echo age=$age
echo "age=$age"

:1. 定义变量不要在等号前后加​​空格​​​;2. 使用变量要使用 ​​$​​;3. 最后两行输出效果相同

# `age=18` 改为 `age= 18`
test11@pjl:~/tmp$ sh demo.sh
demo.sh: 2: 18: not found
age=
age=

使用 ​​unset​​ 可以销毁变量。请看示例:

test11@pjl:~/tmp$ vim demo.sh
test11@pjl:~/tmp$ sh demo.sh
age=18
age=

# 脚本内容
test11@pjl:~/tmp$ cat demo.sh
#!/bin/bash
age=18
echo age=$age
unset age
echo age=$age

:销毁变量 age 后再使用该变量,没有报错。

通过 ​​readonly​​​ 定义静态变量,不能 ​​unset​​。请看示例:

test11@pjl:~/tmp$ vim demo.sh
test11@pjl:~/tmp$ sh demo.sh
age=18
demo.sh: 4: unset: 合格linux运维人员必会的30道shell编程面试题及讲解

什么是Shell?Shell脚本是什么?shell脚本执行过程?学习Shell编程必看!

一脸懵逼学习Linux的Shell编程

linux基础学习-17-linux操作系统之Shell编程基础讲解

Linux shell 编程学习笔记--第一章

shell编程学习2