shell基础学习及变量与输出
什么是shell
说白了,Shell就是你跟Linux内核之间的翻译官——你把命令敲给它,它翻译成系统调用丢给内核去执行。
常见的Shell有这几种:
什么是Shell脚本
说白了就是把一堆命令写到一个文件里,给个执行权限,一次跑完——不用一条条敲。
脚本的基本写法
#!/bin/bash
//脚本第一行, #!魔法字符,指定脚本代码执行的程序。即它告诉系统这个脚本需要什么解释器来执行,也就是使用
哪一种Shell
#代表注释,#!特例
//以下内容是对脚本的基本信息的描述,大家可以根据实际情况尽可能的写详细一些,方便后续使用者
# Name: 脚本名字
# Desc:描述describe
# Path:存放路径
# Usage:用法
# Update:更新时间
# Author:作者
# Release: 分发版本
//下面就是脚本的具体内容
commands
...脚本如何跑起来
下面是脚本内容:
#!/bin/bash
# 文件名: hello.sh
# 功能: 第一个Shell脚本
echo "Hello,运维工程师!"
echo "当前时间: $(date)"
echo "当前用户: $(whoami)"
echo "当前目录: $(pwd)" # 给执行权限+运行
chmod +x hello.sh
./hello.sh
# 或者直接用bash解释执行(不需要执行权限)
bash hello.sh变量与参数
怎么定义变量?
#!/bin/bash
# 定义变量(等号两边绝不能有空格!)
name="张三"
age=25
port=8080
# 使用变量(加$符号)
echo "姓名: $name"
echo "年龄: $age"
echo "端口: $port"
# 花括号明确边界(推荐写法,防止粘连)
host="192.168.8.50"
echo "服务地址: ${host}:${port}"
# 只读变量
readonly company="ABC科技"
# company="新公司" ← 这行会报错!
# 删除变量
unset age
echo "age=$age" # 输出 age= (空了)易错点提醒:name = "张三"←等号两边有空格,直接报错command not found。这是新手踩坑第一名。
变量默认值——没传就用兜底值:
# ${var:-默认值} → var没值就用默认(不改var本身)
port=${PORT:-8080}
# ${var:=默认值} → 同上,但会把默认值赋给var
echo ${NAME:=admin}
# ${var:?错误信息} → 没值直接报错退出
config=${CONFIG_FILE:?必须传入CONFIG_FILE环境变量}
# ${var:+代替值} → var有值时用代替值
debug=${DEBUG:+--verbose}2.2 三种引号,傻傻分不清?
name="张三"
# 双引号 → 变量会解析
echo "你好,$name" # 输出: 你好,张三
# 单引号 → 原样输出,啥都不解析
echo '你好,$name' # 输出: 你好,$name
# $() → 执行命令拿结果
echo "今天是$(date +%F)" # 输出: 今天是2026-07-22一张表记牢:
易错点提醒:echo "今天是$date"和echo "今天是$(date)"不是一回事!前者打印变量$date的值(大概率是空的),后者执行date命令拿当前时间。
原创
shell基础学习及变量与输出
本文采用 CC BY-NC-SA 4.0 许可协议,转载请注明出处。
评论交流
欢迎留下你的想法