介绍
SH文件通常指的是 Shell 脚本文件,文件后缀名为.sh,其中包含一系列要由操作系统的命令解释器执行的命令。
在 Unix 和类 Unix 操作系统中,通常使用 Bourne Shell(sh)或其衍生的 Shell(如 Bash、Zsh)来执行这些脚本。
SH文件示例
在 Shell 脚本文件中,可以通过直接编写命令来执行特定的操作。
#!/bin/bash
# 这是一个简单的 Shell 脚本
echo "Hello, World!"
# 使用变量
name="John"
echo "Welcome, $name!"
解释:
#!/bin/bash
:指定了用于执行脚本的解释器,这里是 Bash。
echo "Hello, World!"
:打印 “Hello, World!” 到终端。
name="John"
:定义了一个变量 name,并赋值为 “John”。
echo "Welcome, $name!"
:使用变量输出 “Welcome, John!”。
执行SH文件
要执行这个脚本,可以将其保存为文件,例如 myscript.sh,然后在终端中运行。
方式1:bash运行
bash myscript.sh
# or
sh myscript.sh
方式2:source运行
source myscript.sh
方式3:./ 运行
原理同bash运行,保证脚本首行有如下规则:
#!/bin/bash
并给脚本添加执行权限,然后直接运行:
# 添加执行权限
chmod +x myscript.sh
# 进入到脚本目录,直接运行
./myscript.sh
区别
bash
执行脚本时,会创建shell子进程执行命令,子进程中会设置自己运行环境变量,但父进程的环境变量不会改变。 子进程执行完毕将会消失,并切换为父进程继续接收命令。
source
执行脚本时,不会创建子进程,而是在父进程中直接执行,因此会改变父进程的环境变量。
./
执行脚本与bash原理相同,但需要确保脚本首行指定执行文件(#!/bin/bash
)且脚本本身具有执行权限。
总结:若要修改当前shell本身的环境变量,则需要使用source
命令执行脚本。bash
执行方式适用于安装软件,source
执行方式适用于修改环境变量。
具体用法
单一命令
#!/bin/bash
echo "Hello, World!"
此段代码中,echo "Hello, World!"
是一个简单的命令,会将 "Hello, World!"
输出到终端。
多个命令
#!/bin/bash
echo "Starting the script..."
ls -l
echo "Script completed."
此段代码中,脚本包含了多个命令,使用换行符分隔。
变量和命令替换
#!/bin/bash
name="John"
echo "Hello, $name!"
current_directory=$(pwd)
echo "Current directory: $current_directory"
此段代码中,展示了如何定义变量并在命令中使用它们,以及如何使用 $(command)
进行命令替换。
接受用户输入
#!/bin/bash
echo "What is your name?"
read name
echo "Hello, $name! Nice to meet you."
此段代码中,使用 read
命令可以接受用户的输入。
条件语句
#!/bin/bash
age=25
if [ $age -eq 18 ]; then
echo "You are 18 years old."
else
echo "You are not 18 years old."
fi
此段代码中,展示了一个简单的条件语句,根据年龄输出不同的消息。