构建基本shell脚本

构建基本shell脚本

一、Xshell 实操

1.多命令实操

(1) 分号执行

date ; who

(2) 管道执行

date | who

2.脚本创建与运行实操

(1)新建 test.sh 基础脚本

date

who

(2)两种运行方式

方式1,无需权限

bash test.sh

方式2,赋权后运行

chmod u+x test.sh

ls -l test.sh

./test.sh

3.echo 输出实操

改造 test.sh 脚本

echo -n "当前系统时间:"

date

echo "登录用户列表:"

Who

4.变量实操

(1) 系统变量脚本 var_test.sh

echo "用户名:$USER,家目录:$HOME"

echo "转义符号:\$HOME"

(2) 自定义变量

name="Tom"

echo $name

(3) 命令替换生成日志

now=$(date +%y%m%d)

log="log.$now"

who > $log

5.wc 统计实操

wc -l *.sh

6.数学运算实操

(1) 整数运算脚本 math.sh

#!/bin/bash

res1=$((100*(50-45)))

res2=$[100/52]

echo $res1 $res2

(2) bc 浮点运算

float_result=$(echo "scale=4;100/52" | bc)

echo $float_result

7.退出状态码实操

(1) 查看命令状态

ls math.sh

echo $?

ls nofile

echo $?

(2) 自定义退出脚本 math.sh

exit 5

执行验证:

./math.sh

echo $?

二、理论知识框架

1.单行多命令执行

(1) 分号;

① 概念:同一行分隔多条命令,依次完整执行,每条命令独立输出,无数据传递。

② 参数说明:无额外参数,仅作为命令分隔符。

(2) 管道|

① 概念:将前一条命令输出作为后一条输入,仅展示最终执行结果。

② 参数说明:无额外参数,用于命令数据流传递。

2.Shell 脚本创建与运行

(1) 脚本编写规则

① .sh为脚本后缀,首行#!/bin/bash指定 bash 解释器;#单行注释。

(2) 运行方式

① bash 脚本名:直接调用解释器,无需执行权限。

② ./ 脚本名:相对路径运行,文件必须拥有 x 执行权限,chmod u+x添加权限。

3.echo 输出控制

(1) echo "文本":默认输出后自动换行。

(2) echo -n "文本":-n 参数取消末尾换行,文字与后续输出同行。

4.Shell 变量

(1) 系统环境变量

① $变量名读取变量值,\$转义原样打印符;常用:USER、UID、HOME。

(2) 自定义变量

① 命名:字母、数字、下划线,长度≤20 字符;赋值格式变量=值,等号两侧无空格;仅脚本内生效。

(3) 命令替换

① 两种写法`命令`、$(命令),抓取命令执行结果赋值变量,推荐$(命令)。

5.wc 统计命令

(1) 基础功能:默认输出行数、单词、字节。

(2) 核心参数-l:仅统计文件行数;*通配符批量匹配所有.sh 文件。

6.数学运算

(1) 整数运算

① expr:运算符两侧必须空格,乘号 * 需转义\*。

② $[] / $(()):无需转义,脚本推荐写法,支持嵌套表达式。

(2) bc 浮点运算

① bash 仅支持整数,bc 实现小数计算;scale=N设置小数保留位数;交互模式用 quit 退出。

② 脚本调用格式:变量=$(echo "scale=N;运算式" | bc),scale 语句必须前置。

7.退出状态码

(1) 特殊变量$?:存储上一条命令执行状态,0 代表成功,1 通用错误,126 无权限,127 命令不存在。

(2) exit n:脚本自定义退出码,n 取值范围 0~255。

三、常用命令速查

1. #!/bin/bash:脚本首行解释器声明

2. echo -n:输出不换行

3. ;、|:多命令分隔、管道传参

4. wc -l:统计文件行数

5. expr、[]、(()):整数运算

6. bc scale:浮点精度控制

7. $():命令替换

8. $?:读取执行状态

9. exit n:自定义退出码

10.chmod u+x:添加脚本执行权限

四、知识点总结

1. .sh 脚本首行标注解释器,分号并行命令,管道传递输出。

2.脚本两种运行方式,./ 运行必须添加 x 执行权限。

3. echo 控制换行;变量分系统、自定义,$() 抓取命令输出生成文件。

4. wc 统计行数;整数多种运算写法,bc 完成小数计算。

5. $? 查看命令执行结果,exit 自定义脚本退出状态码。