运行
1、作为可执行程序
#!/bin/bash # 指定解释此脚本文件的程序
$ chmod a+x test.sh # 使脚本具有执行权限
$ ./text.sh # 执行脚本
./test.sh # 在当前目录找
test.sh # 去 PATH 里寻找
2、作为解释器参数
$ bash test.sh
变量
key="value" # 定义变量, 变量名和等号之间不能有空格
readonly key # 只读变量, 再次赋值会报错
echo $key # 使用变量, 使用变量要在变量名前面加美元符号
echo ${key} # 识别变量的边界
unset key # 删除变量
变量类型
- 局部变量
- 环境变量
- shell变量
字符串可以用单引号,也可以用双引号,也可以不用引号
单引号:原样字符串,不可以有变量和转义字符 双引号:可以有变量和转义字符
字符串拼接
name="Tom"
echo "hi "$name"!" # hi Tom!
echo "hi ${name}!" # hi Tom!
echo 'hi ${name}!' # hi ${name}!
echo ${#name} # 字符长度 3
echo ${name:1:4} # 字符串截取 om
数组
Bash Shell只支持一维数组, 下标由0开始
# 定义数组, "空格"分割
names=("Tom" "Jack")
ages=(
23
24
)
# 数组元素赋值
names[2]="Jimi"
# 获取数组元素
echo ${names[2]} # Jimi
# 获取数组所有元素
echo ${ages[@]} # 23 24
echo ${ages[*]} # 23 24
# 获取数组的长度
echo ${#names[@]} # 3
注释
# 单行注释
: file.txt # 结果重定向
示例:读取输入并输出
#!/bin/bash
read -p "请输出用户名:" content # -p提示文字
read -p "请输出密码:" -s password # -s 隐藏输入内容
echo -e "\n用户名: ${content}\n密码: ${password}"
: file1 # 输出重定向
command1 >> file1 # 追加输出重定向
command 2 > file # stderr重定向
command > file 2>&1 # 合并stdout和stderr
command1 /dev/null 2>&1 # 屏蔽输出
示例
$ echo -e 'hello world\nhi china' > text.txt
$ cat text.txt
hello world
hi china
$ wc -l
关注
打赏