Linux shell 基础之--基本脚本

简介: 在创建shell脚本文件时,必须在文件的第一行指定要使用的shell。 其格式为:#!/bin/bash 在通常的shell脚本中,井号( # )用作注释行。shell并不会处理shell脚本中的注释行。

在创建shell脚本文件时,必须在文件的第一行指定要使用的shell。
其格式为:#!/bin/bash
在通常的shell脚本中,井号( # )用作注释行。shell并不会处理shell脚本中的注释行。然而,
shell脚本文件的第一行是个例外, # 后面的惊叹号会告诉shell用哪个shell来运行脚本(是的,你
可以使用bash shell,同时还可以使用另一个shell来运行你的脚本)。
在指定了shell之后,就可以在文件的每一行中输入命令,然后加一个回车符。之前提到过,
注释可用 # 添加。例如:
image

image

# 同一个行输出内容  加参数-n
echo -n "当前时间: "
date

image

# 命令替换
!/bin/bash
# This script displays the date and who's logged on
# 注意下面不是单引号,而是键盘上esc下面那个键,date的输出内容赋值给testing
testing=`date`
# 也可以这样写  testing=$(date)
echo $testing
who

image

# 重定向输入和输出 
# 当前目录创建文件test6并内容输出到文件中
date > test6

image

# 输入重定向
# wc 命令可以对对数据中的文本进行计数。默认情况下,它会输出3个值:
# 文本的行数
# 文本的词数
# 文本的字节数
wc < test6

image

# 管道通信
# ps -ef 的输出作为后一个命令grep 的输入
# grep 返回 包含bash字段的一行记录
 ps -ef|grep 'bash'

image
有几种解决方案能够克服bash中数学运算的整数限制。
最常见的方案是用内建的bash计算器,
叫作 bc 。
bc 的基本用法
bash计算器实际上是一种编程语言,它允许在命令行中输入浮点表达式,然后解释并计算该
表达式,最后返回结果

# bash计算器
# 输入quit退出bash计算器
# 浮点运算是由内建变量 scale 控制的。必须将这个值设置为你希望在计算结果中保留的小数
# 位数,否则无法得到期望的结果

image

image

# 除了普通数字,bash计算器还能支持变量
# 变量一旦被定义,你就可以在整个bash计算器会话中使用该变量了。 print 语句允许你打印
# 变量和数字

image

# 在脚本中使用 bc

image

image

# 也可以用shell脚本中定义好的变量

image

image

# 一旦变量被赋值,那个变量也可以用于其他运算

image

image
这个方法适用于较短的运算,但有时你会涉及更多的数字。如果需要进行大量运算,在一个
命令行中列出多个表达式就会有点麻烦。
有一个方法可以解决这个问题。 bc 命令能识别输入重定向,允许你将一个文件重定向到 bc
命令来处理。但这同样会叫人头疼,因为你还得将表达式存放到文件中。
最好的办法是使用内联输入重定向,它允许你直接在命令行中重定向数据。在shell脚本中,
你可以将输出赋给一个变量
image

image
Linux提供了一个专门的变量 $? 来保存上个已执行命令的退出状态码。对于需要进行检查的
命令,必须在其运行完毕后立刻查看或使用 $? 变量。它的值会变成由shell所执行的最后一条命令
的退出状态码
image
按照惯例,一个成功结束的命令的退出状态码是 0 。如果一个命令结束时有错误,退出状态11.8 退出脚本
229
码就是一个正数值
image
默认情况下,shell脚本会以脚本中的最后一个命令的退出状态码退出
你可以改变这种默认行为,返回自己的退出状态码。 exit 命令允许你在脚本结束时指定一
个退出状态码
image

image
你要注意这个功能,因为退出状态码最大只能是 255
image
退出状态码被缩减到了0~255的区间。shell通过模运算得到这个结果。一个值的模就是被除
后的余数。最终的结果是指定的数值除以256后得到的余数。在这个例子中,指定的值是 300 (返
回值)
,余数是44,因此这个余数就成了最后的状态退出码
image

目录
相关文章
|
8天前
|
Web App开发 Java Linux
Linux之Shell基本命令篇
Linux之Shell基本命令篇
Linux之Shell基本命令篇
|
15天前
|
弹性计算 Shell Perl
ecs服务器shell常用脚本练习(二)
【4月更文挑战第1天】shell代码训练(二)
100 1
|
15天前
|
Linux Shell
Linux手动清理Linux脚本日志定时清理日志和log文件执行表达式
Linux手动清理Linux脚本日志定时清理日志和log文件执行表达式
70 1
|
18天前
|
Java Shell
SpringBoot启动脚本Shell
SpringBoot启动脚本Shell
15 0
|
18天前
|
Linux Shell Python
Linux执行Python脚本
Linux执行Python脚本
26 1
|
4天前
|
存储 弹性计算 Shell
ecs服务器shell常用脚本练习(十)
【4月更文挑战第11天】shell代码训练(十)
135 0
|
4天前
|
弹性计算 Shell Go
ecs服务器shell常用脚本练习(九)
【4月更文挑战第10天】shell代码训练(八)
120 0
|
9天前
|
Shell Linux
【Linux】12. 模拟实现shell
【Linux】12. 模拟实现shell
25 2
|
14天前
|
Ubuntu Unix Linux
【Linux/Ubuntu】Linux/Ubuntu运行python脚本
【Linux/Ubuntu】Linux/Ubuntu运行python脚本
|
15天前
|
Shell
【shell】实时查看网卡流量脚本
【shell】实时查看网卡流量脚本