Linux-shell语法
概述
shell脚本有多种多样,比如Bourne Shell
Bourne Again Shell
C Shell
K Shell
zsh
……
但是Linux中默认使用的是bash
使用
使用bash
就要在文件开头写#! /bin/bash
,用来指明bash为脚本编辑器。
示例:
新建一个test.sh文件,输入内容:1
2
echo "Hello World!"
运行:1
2
3chmod +x test.sh # 使脚本具备可执行权限
./test.sh # 当前路径下执行
bash test.sh # 使用解释器执行
功能
注释
单行注释:
#
之后的内容就是注释1
echo 'hello world' #这是注释
多行注释:
1 | :<<EOF |
变量
定义变量
定义变量,不需要加$
符号,例如:1
2
3
4name1='hxx'
name2="hxx"
name3=hxx
# 定义字符串可以用单引号、双引号、不加引号
使用变量
使用变量需要加上$
符号,或者${}
符号。花括号是可选的,主要为了帮助解释器识别变量边界。1
2
3
4name=hxx
echo $name
echo ${name}
echo ${name}good
只读变量
使用readonly
或者declare -r
可以将变量变成只读1
2
3
4
5
6
7name=hxx
# 下边两个都可以
readonly name
declare -r name
name=abc #会报错,因为此时name为只读
删除变量
unset
可以删除变量1
2
3name=hxx
unset name
echo $name #输出空行
变量类型
- 自定义变量(局部变量)
子进程不能访问的变量 - 环境变量(全局变量)
子进程可以访问的变量
自定义变量改成环境变量,
export
或者declare -x
1
2
3name=hxx #定义变量
export name #第一种方法
declare -x name #第二种方法环境变量改为自定义变量,
declare +x
1
2export name=hxx #定义环境变量
declare +x name #改为自定义变量
字符串
字符串可以使用单引号、双引号、不用引号
单引号和双引号区别:
- 单引号中内容会原样输出,不会执行、不会取变量;
- 双引号中内容可以执行、可以取变量;获取字符串长度:
1
2
3name=hxx
echo 'hello,$name \"hh\"' # 单引号字符串,输出 hello,$name \"hh\"
echo "hello,$name \"hh\"" # 双引号字符串,输出 hello,hxx "hh"
使用`$