当前位置: 首页 > java >正文

shell脚本编辑(小白基础学习)


一、Shell的格式化输出printf

1.1 语法格式:

printf "指定的格式" "文本1" "文本2" .....

1.2 常用格式替换符:

替换符功能
%s字符串
%f浮点格式,保留小数点位数%.nf,n为数字
%b相对应的参数中包括转义字符时,可以使用此替换符进行替换,对应的转义字符会被转义
%cASCII字符,即显示对应参数的第一个字符
%d,%i十进制整数
%o八进制值
%u不带正负号的十进制值
%x十六进制值(a-f)
%X十六进制值(A-F)
%%表示%本身

说明:%s中的数字代表此替换符中的输出字符宽度,不足补空格,默认是右对齐,%-10s表示10个字符宽,-表示左对齐

1.3 常用转义字符

转义符功能
\a警告字符,通常为ASCII的BEL字符
\b后退
\n换行
\r回车
\t水平制表符
\v垂直制表符
\f换页
\\表示\\本身

案例:

[root@bogon ~]# printf "%s\n" 1 2 3 4
1
2
3
4
[root@bogon ~]# printf "%f\n" 1 2 3 4
1.000000
2.000000
3.000000
4.000000
[root@bogon ~]# printf "%.2f\n" 1 2 3 4 #.2f
1.00
2.00
3.00
4.00
root@bogon ~]#  printf " (%s) " 1 2 3 4;echo " "(1)  (2)  (3)  (4)  
[root@bogon ~]# printf " (%s) (%s)\n" 1 2 3 4;echo " "(1) (2)(3) (4)[root@bogon ~]# printf " %s %s\n" 1 2 3 4;echo " "1 23 4[root@bogon ~]# printf " %s %s\n" 1 2 3 41 23 4
[root@bogon ~]# 
#%-10s表示宽度10个字符,左对齐

 二、Shell脚本语言的运算

 2.1 算数运算

shell支持算术运算,但只支持整数,不支持小数

2.2 Bash中的算术运算

-- + 加法运算
-- - 减法运算
-- * 乘法运算
-- / 除法运算
-- % 取模,即取余数
-- ** 乘方 

#乘法符号在有些场景需要转义

2.3实现算术运算

1. let var=算术表达式
2. var=$[算术表达式]
3. var=$((算术表达式))
4. var=$(expr arg1 arg2 arg3 ...)
5. declare -i var = 数值
6. echo '算术表达式' | bc  (支持浮点数)

实例:使用bc计算小数和declare -i计算

[root@bogon ~]# echo "scale=3;20/3"|bc
6.666
[root@bogon ~]# echo "scale=3;2/3"|bc
.666
[root@bogon ~]# i=20
[root@bogon ~]# j=20
[root@bogon ~]# declare -i sum=i*j
[root@bogon ~]# echo $sum
400
[root@bogon ~]# 

内建的随机数生成器变量:

$RANDOM  取值范围:0-32767

实例:生成0-49之间的随机数

[root@bogon ~]# echo $[$[$RANDOM%50]+1]
15
[root@bogon ~]# echo $[$RANDOM%50]
33
[root@bogon ~]# echo $[RANOM % 100 + 1]
1

实例:生成随机颜色字符串

root@bogon ~]#  echo -e "\033[1;$[RANDOM%7+31]mStudy\033[0m"
Study
[root@bogon ~]#  echo -e "\033[1;$[RANDOM%7+31]mStudy\033[0m"
Study
[root@bogon ~]# 
[root@bogon ~]#  echo -e "\033[1;$[RANDOM%7+31]mStudy\033[0m"
Study

 2.4增强型赋值:

+= 
i+=10 <==> i=1+10
-=
i-=j  <==> i=i-j
*=
/=
%=
++ 
i++,++1 <==> i=i+1 (自增)
--
i--,--i <==> i=i-1 (自减)

格式:

let  varOPERvalue

[root@bogon ~]# let var=1
[root@bogon ~]# echo $var
1
[root@bogon ~]# let var++
[root@bogon ~]# echo $var
2
[root@bogon ~]# echo $var--
2--
[root@bogon ~]# echo $var
2
[root@bogon ~]# let var--
[root@bogon ~]# echo $var
1
[root@bogon ~]# unset i j ;i=1;let j=i++;echo "i=$i,j=$j"
i=2,j=1# i++ 与 ++i的区别:
i++ 先赋值再运算
++i 先运算再赋值

实例:鸡兔同笼问题


[root@bogon ~]# mkdir -p shell
[root@bogon ~]# vim shell/chicken.sh
#!/bin/bash
HEAD=35
FOOT=94RABBIT=$(((FOOT-HEAD-HEAD)/2))
CHOOK=$[35-RABBIT]
echo "兔子的数量为:"$RABBIT
echo "鸡的数量为: "$CHOOK
[root@bogon ~]# chmod +x shell/chicken.sh 
[root@bogon ~]# shell/chicken.sh
兔子的数量为:12
鸡的数量为: 23

计算出所有人的年龄总和

[root@ansible-salve1 shell]# vim nianling.txt
[root@ansible-salve1 shell]# cat nianling.txt
a=20
b=18
c=22
[root@ansible-salve1 shell]# cut -d"=" -f2 nianling.txt 
20
18
22
[root@ansible-salve1 shell]# cut -d"=" -f2 nianling.txt | tr '\n' + | grep -Eo ".*[0-9]" | bc
60
[root@ansible-salve1 shell]# grep -Eo "[0-9]+" nianling.txt 
20
18
22
[root@ansible-salve1 shell]# grep -Eo "[0-9]+" nianling.txt | tr '\n' +| grep -Eo ".*[0-9]" | bc
60
[root@ansible-salve1 shell]# 

http://www.xdnf.cn/news/19640.html

相关文章:

  • 从拿起简历(resume)重新找工作开始聊起
  • 【算法】算法题核心类别与通用解题思路
  • git基础命令
  • React中纯 localStorage 与 Context + useReducer + localStorage对比
  • HTML应用指南:利用GET请求获取MSN财经股价数据并可视化
  • IDEA Spring属性注解依赖注入的警告 Field injection is not recommended 异常解决方案
  • 【0426】insert into 内核实现之 找到 buffe, 插入 tuple (2)
  • YOLO 目标检测:YOLOv4数据增强、CIoU Loss、网络结构、CSP、SPPNet、FPN和PAN
  • 模型量化(Model Quantization) 和低精度计算(Low-Precision Computing)
  • 程序员与杀毒软件:一场不必要的“战争”?程序员用什么杀毒软件?-优雅草卓伊凡
  • pandas自学笔记16 pandas可视化
  • 2025年职场人士专业证书选择与分析
  • 免费GIS服务器方案:OGC标准3DTiles服务发布与跨平台渲染实践
  • word运行时错误‘53’,文件未找到:MathPage.WLL,更改加载项路径完美解决
  • 漏洞挖掘 渗透测试思路图总结
  • 洛谷 P1115 最大子段和
  • Onion-LO(已开源)——LIDAR里程计的统一框架
  • LeetCode 面试经典 150_滑动窗口_串联所有单词的子串(32_30_C++_困难)(滑动窗口:控制起点和滑动距离)
  • GPS:开启定位时代的科技魔杖
  • 四、操作系统
  • 松灵斯坦福Mobile ALOHA同款 | 通过低成本全身远程操作实现双手机器人移动操控学习
  • Docker的应用
  • 机器学习通关秘籍|Day 05:过拟合和欠拟合、正则化、岭回归、拉索回归、逻辑回归、Kmeans聚类
  • ubantu安装配置hive
  • GitLab 18.3 正式发布,更新多项 DevOps、CI/CD 功能【一】
  • Android入门到实战(六):Android主流图片加载框架
  • 夜莺监控新版表格配置图文讲解
  • TypeScript交叉类型、重复属性、类型断言和as const详解
  • 基于Hadoop的可视化城市宜居指数分析(代码+数据库+LW)
  • Masonry入门学习