Shell 笔记:脚本结构和变量

Shell 笔记

最近在整理自己的Linux 配置文件到 dotfiles 仓库,想要写一份自动配置脚本方便自动化配置

脚本结构

第一行要指定运行时使用的Shell,如 bash, zsh, sh, 我使用的是zsh

1
2
3
4
5
6
7
#!/bin/zsh

#!/bin/sh
#!/bin/bash
#!/bin/fish

etc.

同时,这里指定的 Shell 也是支持 Python 的,只需要改成

1
#!/bin/python3

因为想学一下 Shell脚本,所以并没有指定成Python运行

变量

声明变量

变量声明和 Python 类似

1
var=0 # 符号之间不要空格,否则Shell会把 var 当作命令执行,并报错 command not found: var

如果想要让这个变量不仅在这个脚本中可见,脚本执行完成之后仍然存在,可以使用 export

1
export var=0 # 同样的等号两边不允许使用空格

可以使用 readonly 标记某个变量为常量只读

1
2
var=100
readonly var

调用变量

使用一个定义过的变量,在变量名前面加美元符号,可以在变量名两边加花括号 {}

1
2
3
var=100
echo $var
echo ${var}

最好不要使用内置关键字、命令的名字定义变量

顺序结构

最简单的逻辑结构就是顺序结构,在 Shell 中只需要简单地写命令即可,一行一条命令;也可多条命令写在一行,使用分号 ; 分割

1
2
3
4
5
6
var="Hello Zsh"
echo $var
pwd
uname -a

echo Hello Shell; echo See you!

执行后输出

image-20240406201820710