shell脚本以#!开头指定解释器,需用chmod设置执行权限后才能运行;支持变量、read输入、if判断和for循环等基本语法。

Shell脚本是linux系统管理与自动化任务的基石,写一个能运行的简单脚本并不难,关键是理解执行逻辑、权限设置和基本语法结构。
Shell脚本长什么样?从第一行开始
每个Shell脚本通常以“shebang”(#!)开头,告诉系统用哪个解释器来运行它。最常见的是:
#!/bin/bash
这行必须是脚本的第一行,不能有空格或注释在前面。之后就可以写命令了,比如:
echo "你好,这是我的第一个脚本" date ls -l
这些命令会按顺序逐行执行,就像你在终端里手动敲的一样。
怎么让脚本真正跑起来?别忘了给权限
新建的文件默认没有执行权限,直接输入 ./myscript.sh 会报错:Permission denied。需要先用 chmod 加上可执行权限:
- chmod +x myscript.sh —— 给当前用户、组和其他人全部加上执行权(常用)
- chmod 755 myscript.sh —— 更明确:所有者可读写执行(7),组和其他人可读可执行(55)
加完权限后,就可以用 ./myscript.sh 运行了(注意前面的 ./,表示当前目录下的文件)。
变量和用户输入:让脚本更灵活
Shell支持变量赋值(等号两边不能有空格),也支持用 read 获取用户输入:
name="小明" echo "欢迎 $name" echo "请输入你的年龄:" read age echo "你今年 $age 岁"
注意:$变量名 才是取值,定义时不用美元符;双引号内支持变量展开,单引号则原样输出。
加点判断和循环,脚本就活了
简单的逻辑控制能让脚本应对不同情况。比如检查文件是否存在:
if [ -f "/tmp/test.txt" ]; then echo "文件存在" else echo "文件不存在,正在创建..." touch /tmp/test.txt fi
再比如打印数字1到3:
for i in 1 2 3; do echo "第 $i 次运行" done
方括号 [ ] 是 test 命令的简写,前后必须有空格;do 和 done 是 for 循环的固定配对。
基本上就这些——写脚本不复杂,但容易忽略权限、路径、空格和引号这些细节。动手试几次,比看十遍文档都管用。