将一系列的命令写到文件中,再执行。
Shell 既是一种脚本编程语言,也是一个连接内核和用户的软件。
常见的 Shell 有 sh、bash、csh、tcsh、ash,zsh 等。 sh sh 的全称Bourne shell,由 AT&T 公司的 Steve Bourne开发,为了纪念他,就用他的名字命名了。
sh 是 UNIX 上的标准 shell,很多 UNIX 版本都配有 sh。sh 是第一个流行的 Shell。
csh sh 之后另一个广为流传的 shell 是由柏克莱大学的 Bill Joy 设计的,这个 shell 的语法有点类似C语言,所以才得名为 C shell ,简称为 csh。Bill Joy 是一个风云人物,他创立了 BSD 操作系统,开发了 vi 编辑器,还是Sun 公司的创始人之一。 BSD 是 UNIX 的一个重要分支,后人在此基础上发展出了很多现代的操作系统,最著名的有 FreeBSD、OpenBSD 和NetBSD,就连 Mac OS X 在很大程度上也基于BSD。 tcsh tcsh 是 csh 的增强版,加入了命令补全功能,提供了更加强大的语法支持。 ash 一个简单的轻量级的 Shell,占用资源少,适合运行于低内存环境,但是与下面讲到的 bash shell 完全兼容。 bash bash shell 是 Linux 的默认 shell,本教程也基于 bash 编写。
bash 由 GNU 组织开发,保持了对 sh shell 的兼容性,是各种 Linux 发行版默认配置的 shell。 bash 兼容 sh 意味着,针对 sh 编写的 Shell 代码可
以不加修改地在 bash 中运行。 尽管如此,bash 和 sh 还是有一些不同之
处: 一方面,bash 扩展了一些命令和参数; 另一方面,bash 并不完全和
sh 兼容,它们有些行为并不一致,但在大多数企业运维的情况下区别不
大,特殊场景可以使用 bash 代替 sh。
touch 文件
vim 文件
cat >>文件 <<结束符号
>
>
>结束符号
#!/bin/bash
#注释
命令
chmod +x 文件名
ctrl+c:终止当前命令的执行;ctrl+u:撤销当前输入的错误的数据;
绝对路径/文件名
./文件名 (相对路径)
bash 文件名
source 文件名
#!/bin/bash
#author:lang
#date:2020-9-1
#$数字 用来接受空格隔开的参数$0:当前操作的文件名 $1:第一个参数
$2 :第二个参数....
tar zcvf $1.tar.gz $2 && echo "备份成功"
#!/bin/bash
#注释
read -p "请输入你的名字:" yourname
echo "你的名字是:${yourname}"
mkdir ${yourname}
cd ${yourname}
touch t001
echo "hello world" >> t001
原始文件名和日期来指定新的文件名,打包功能
默认参数
$数字:
$0:文件名
$1 .... 参数
$*:所有参数
"$1$2$3"
$@:所有参数
"$1" "$2" "$3"
$# :参数个数
$$:shell脚本执行的进程PID
$?:上一条命令执行后返回的结果
#!/bin/bash
echo $1
echo $2
echo $*
echo $@
echo "参数的个数:$#"
echo $?
#!/bin/bash
if [ $1 -eq $2 ]; then
echo '相等'
else
echo '不等'
fi
循环示例:
for var in var1 var2 var3
do
测试
done
#!/bin/bash
for i in "潘金莲" "高磊" "西门庆";
do
echo $i
done
sum=0
for (( i=1;i<=5;i++ ))
do
echo $i
sum=$((sum + i ))
done
echo "和:${sum}"