亦余心之所善兮,虽九死其犹未悔。这篇文章主要讲述前端学习 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 test1131 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 test1131 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 test1131 6月17 16:18 hello-world.sh
test11@pjl:~/tmp$ sh hello-world.sh
hello world
shell 注释
- 单行注释:?
?# 内容?
? - 多行注释:
:< < !
内容1
内容2
...
内容N
!
变量
系统变量【前端学习 linux —— shell 编程】例如 ?
?$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:推荐阅读
- vim新窗口中显示内部命令结果
- 前端学习 linux —— 第一篇
- Microsoft Build 2022 专家对话
- iNeuOS工业互联网操作系统,增加搜索应用多数据源绑定视图背景设置颜色多级别文件夹组合及拆分图元
- Arch Linux诞生20年了
- VirtualBox 6.1.34 发布
- VMWare 虚拟机不能全屏
- CentOS Stream才是未来
- /dev/null 先后顺序的问题