(一)shell介绍——书写格式、特殊符号、echo输出与颜色设置、read输出等

本文详细介绍了Shell脚本的基础知识,包括脚本格式、运行命令、特殊符号与变量、重定向、数学运算、echo命令的格式化输出及颜色设置,以及read命令的基本输入操作。通过实例演示了如何编写和执行简单的Shell脚本,是学习Linux自动化运维的入门教程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >


视屏学习:(链接: link.).
   shell脚本就是将完成一个任务的所有命令按照执行的先后顺序,自上而下写入到一个文本文件中,然后给予执行权限。

一、shell脚本的书写格式与运行命令(bash命令)

  1. 命名:shell脚本的名字要有意义,建议使用.sh结尾(虽然Linux系统中的文件没有扩展名的概念)。
  2. 格式:开头第一行需以#!这个特殊符号指定脚本运行环境(如:#!usr/bin/bash)。
  3. 注释:使用#井号进行注释,shell脚本中最好加入说明文档:
#!/usr/bin/bash

#--------------------------------------
# Author        :
# Time          :
# Description   :
# Version       :
#--------------------------------------

echo "hello world!"

shell语言区别于其他编程语言的典型特征:
                (1)、每一行代码后可以不添加分号;    (也可以添加,连接多条命令)
                (2)、shell中的不能直接进行数学运算,需要使用$(( ))进行处理
                (3)、shell中多处(赋值时、条件判断时)对于空格的有无要求较为严格
  1. 运行:如果脚本没有执行权限,可以通过bash命令来运行脚本(如:bash hello.sh);也可以通过chmod给予文件权限直接运行
  2. 退出exit NUM 退出脚本,释放系统资源,NUM代表一个1-255的整数,代表返回值。

二、特殊符号与特殊变量

特殊变量含义
$0Shell本身的文件名
$1…$n命令行传递的参数,$1是第1参数、$2是第2参数…
$?执行上一个指令的返回值 (显示最后命令的退出状态。如果是0表示执行成功;0以外的值表示失败)
$*代表所有参数, 其间隔为IFS内定参数的第一个字元
$@与星号*雷同,代表所有参数, 区别在于不参照IFS
$#代表参数数量
$$脚本本身执行的进程号Processing ID
$_最后一个执行的命令
#!bin/bash

echo "shell's name                 : $0"
echo "shell's parameters           : $*"
echo "shell's numbers of parameter : $#"
echo "shell's processing id        : $$"
echo "shell's last command         : $_"
echo "shell's second parameter     : $2"

[marc@localhost Shell]$ bash special_var.sh aa bb cc dd ee
shell's name                 : special_var.sh
shell's parameters           : aa bb cc dd ee
shell's numbers of parameter : 5
shell's processing id        : 49823
shell's last command         : shell's processing id        : 49823
shell's second parameter     : bb
特殊字符含义
~家目录, 命令:cd ~ 表示进入用户家目录
-上一次目录,命令:cd - 表示进入上一次的目录
!执行历史命令,命令:!! 表示执行上一条命令
$变量中取内容符,命令:echo $HOME 会打印出$HOME变量的内容(家目录)
&后台执行
*shell中的通配符,匹配所有
?shell中的通配符,匹配除回车以外的一个字符
;分号可以在shell的一行中执行多个命令命令之间用分号隔开
|上一个命令的输出作为下一个命令的输入,如:cat filename | grep “abc”
\转义字符
` `反引号, 命令中执行命令,如:echo “Today is `date +%F` ”
’ ’单引号, shell中的字符串需要用单引号引起来,但是区别于双引号的是,单引号不解释变量
" "双引号,shell中的字符串也可以用双引号引起来

示例:
在这里插入图片描述
在这里插入图片描述

三、重定向(> ,>>)

  • > 重定向输入,覆盖原数据;                     如:vcs --help > vcs_help.txt    echo haha > test.txt
  • >> 重定向追加输入,在原数据末尾添加;             如:find ./ -name “*.sh” >> test.txt
  • < 重定向输出;                             如 :wc -l < /etc/passwd
  • << 重定向追加输出,                          如:fdisk /dev/sdb <<EOF …EOF

四、数学运算(expr命令,bc计算器,$(( )) )

  • expr命令:只支持整数运算,且字符间必须添加空格隔开
[marc@localhost ~]$ expr 1 + 1
2
[marc@localhost ~]$ expr 1 - 5
-4
[marc@localhost ~]$ expr 10 \* 2       # 星号*表示乘法应该进行转义,否者认为是通配符
20
[marc@localhost ~]$ expr 10 / 2
5
[marc@localhost ~]$ expr 10 % 3
1
  • bc计算器:可进行浮点运算,scale=2表示保留两位小数
[marc@localhost ~]$ echo "scale=2;141+5"|bc
146
[marc@localhost ~]$ echo "scale=2;141-5"|bc
136
[marc@localhost ~]$ echo "scale=2;141*5"|bc
705
[marc@localhost ~]$ echo "scale=2;141/5"|bc
28.20

在这里插入图片描述

  • 双小圆括号运算(( )),其结果不支持小数
[marc@localhost ~]$ echo $((100+3))
103
[marc@localhost ~]$ echo $((100*3))
300
[marc@localhost ~]$ echo $((100/3))
33
[marc@localhost ~]$ echo $((100%3))
1
[marc@localhost ~]$ echo $((100**3))
1000000

五、格式化输出——echo命令

echo命令介绍:

  • 功能:将内容输出到默认显示设备;
  • 语法echo [-ne] [字符串],输出的字符串间以空白字符隔开,并在结尾自动换行;
命令选项:
  -n : 不在最后进行自动换行
  -e : 解释转义字符,而不会将其当做普通字符输出;(如:\a发出警告声, \t制表符, \n换行符等)

示例1:倒计时显示

#!bin/bash
#--------------------------------------
# Author        :
# Time          :
# Description   :
# Version       :
#--------------------------------------

for time in `seq 9 -1 0`;do
  echo -n -e "$time\b"
  sleep 1
done

echo

示例2:输出一个菜单

#!bin/sh
#--------------------------------------
# Author        :
# Time          :
# Description   :
# Version       :
#--------------------------------------

echo -e "\t\t\t\tFriut Shop"
echo -e "\t1)Apple"
echo -e "\t2)Orange"
echo -e "\t3)Banana"

输出:

[marc@localhost Shell]$ bash test.sh
				Friut Shop
	1)Apple
	2)Orange
	3)Banana

六、echo输出颜色设置——字体、背景等

脚本echo命令输出带颜色的设置,需要使用参数-e

  • 格式:echo -e “\033[字背景颜色;文字颜色m 字符串\033[0m”
    在这里插入图片描述
字颜色:30—–37
  echo -e "\033[30m 黑色字 \033[0m"
  echo -e "\033[31m 红色字 \033[0m"
  echo -e "\033[32m 绿色字 \033[0m"
  echo -e "\033[33m 黄色字 \033[0m"
  echo -e "\033[34m 蓝色字 \033[0m" 
  echo -e "\033[35m 紫色字 \033[0m" 
  echo -e "\033[36m 天蓝字 \033[0m" 
  echo -e "\033[37m 白色字 \033[0m" 

字背景颜色范围:40—–47
  echo -e "\033[40;37m 黑底白字 \033[0m"
  echo -e "\033[41;37m 红底白字 \033[0m" 
  echo -e "\033[42;37m 绿底白字 \033[0m" 
  echo -e "\033[43;37m 黄底白字 \033[0m" 
  echo -e "\033[44;37m 蓝底白字 \033[0m" 
  echo -e "\033[45;37m 紫底白字 \033[0m" 
  echo -e "\033[46;37m 天蓝底白字 \033[0m" 
  echo -e "\033[47;30m 白底黑字 \033[0m"

最后面控制选项说明
  \33[0m 关闭所有属性 
  \33[1m 设置高亮度 
  \33[4m 下划线 
  \33[5m 闪烁 
  \33[7m 反显 
  \33[8m 消隐 
  \33[30m — \33[37m 设置前景色 

设置前景色
  \33[40m — \33[47m 设置背景色 
  \33[nA 光标上移n行 
  \33[nB 光标下移n行 
  \33[nC 光标右移n行 
  \33[nD 光标左移n行 
  \33[y;xH设置光标位置 
  \33[2J 清屏 
  \33[K 清除从光标到行尾的内容 
  \33[s 保存光标位置 
  \33[u 恢复光标位置 
  \33[?25l 隐藏光标 
  \33[?25h 显示光标

七、基本输入——read命令

read命令:默认接受键盘的输入,包含多种命令选项:

  • -p打印信息
  • -t限定时间
  • -s不显示
  • -n输入字符个数
#!bin/bash
#--------------------------------------
# Author        :
# Time          :
# Description   :
# Version       :
#--------------------------------------

clear                            #清屏

#echo -n "Login: " 
#read  user                      #读取键盘输入,存入变量user中
read -p "Login: " user           #打印字符串并读取键盘输入,存入变量user中
echo -n "Password: "
read -s -t10 -n6 pd              #读取键盘输入(输入数据不显示,输入时间10s,最多输入6位数),存入变量pd中

echo                             #equal "\n"

echo "account: $user        password: $pd"
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

SD.ZHAI

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值