是的,Linux shell中确实有系统函数。这些函数可以分为几类:
这些是直接内置于shell中的函数,不需要调用外部程序:
echo
- 输出文本printf
- 格式化输出read
- 读取用户输入eval
- 执行参数作为shell命令exec
- 执行命令并替换当前shellexit
- 退出shellexport
- 设置环境变量test
/ [ ]
- 条件测试getopts
- 解析命令行选项Shell可以调用系统调用(通过外部命令或内置功能):
fork()
- 创建新进程(通过命令执行或后台运行&实现)exec()
- 执行程序(通过直接输入命令名实现)wait()
- 等待子进程结束(通过wait命令实现)虽然不是函数,但这些特殊变量提供了系统信息:
$?
- 上一个命令的退出状态$$
- 当前shell的PID$!
- 最后一个后台进程的PID$0
- 当前脚本名称$1-$9
- 脚本参数许多标准Linux命令实际上是系统调用的封装:
sleep
- 调用nanosleep()
系统调用chmod
- 调用chmod()
系统调用kill
- 调用kill()
系统调用#!/bin/bash
# 使用内置函数
echo "当前脚本: $0"
read -p "输入你的名字: " name
printf "你好, %s!\n" "$name"
# 使用系统信息
echo "当前PID: $$"
# 调用系统调用封装
sleep 1 # 调用sleep系统调用
要查看shell的所有内置函数,可以使用help
命令或man bash
查看完整文档。