声明:学习视频来自b站up主 泷羽sec,如涉及侵权马上删除文章
感谢泷羽sec 团队的教学
视频地址:shell脚本(1)脚本创建执行与变量使用_哔哩哔哩_bilibili
本文主要讲解shell脚本的创建、执行和变量的使用。
一、脚本执行
1. 创建和运行脚本的基本方法
-
创建脚本文件:
touch 1.sh
-
编辑脚本内容:
vim 1.sh #!/bin/bash echo "hello world"
- 解释器声明:
- #!/bin/bash、#!/bin/dash、#!/bin/sh 都是用来指定脚本的解释器。
- ls -l /bin/sh 通常会发现 /bin/sh 链接到 dash,所以即使用 sh,多数情况仍是调用 dash。
- 解释器声明:
-
赋予执行权限并运行脚本:
chmod 777 1.sh ./1.sh
2. 使用解释器直接执行脚本
- 无需赋予执行权限,可以用解释器直接运行:
注意:需指定脚本路径或在当前目录下执行。如 /root/1.shsh 1.sh bash 1.sh dash 1.sh
3. 使用 source
命令执行脚本
- source 命令在当前 shell 中执行脚本,不会启动子进程:
source 1.sh
- 特点:
- 对脚本中的变量定义和修改会直接影响当前 shell 环境。
- 在一些终端工具中,source 命令的提示颜色会加深以标注。
二、变量的使用
1. 声明和定义变量
- 变量名规则:
- 由字母、数字、下划线组成,不能以数字开头。
- 避免在变量名中使用空格。
- 示例:
name='GGB' age=18
2. 使用变量
- 打印变量:
echo my name is $name, my age is $age years old echo "my name is $name, my age is $age years old"加不加引号,打印结果都一样
- 加引号和不加引号的区别:
- 双引号:
效果: 变量会被替换为实际值。echo "my name is $name, my age is $age years old"
- 单引号:
效果: 会直接输出 $name 和 $age,不解析变量。echo 'my name is $name, my age is $age years old'
- 双引号:
3. 变量拼接
- 直接拼接:
问题: $ageyears 被视为一个整体变量名,因为变量ageyears没有被定义,因此打印为空。echo "my name is $name,my age is $ageyears old"
- 使用花括号:
效果: 正确拼接,输出 my name is GGB, my age is 18years old。echo "my name is $name,my age is ${age}years old"
- 加双引号:
效果: 与花括号效果相同。echo "my name is "$name", my age is "$age" years old"
4. 查看定义的变量
- 查看当前 shell 的所有变量:
set
- 查看特定变量:
set | grep name
5. 删除变量
- 使用
unset
删除变量:
删除后变量值为空。unset ggb