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 2
 3 4
 
[root@bogon ~]# printf " %s %s\n" 1 2 3 4
 1 2
 3 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=94

RABBIT=$(((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]# 

以下是编写一个精度可调的计算π的Linux Shell脚本的详细步骤: ### 1. 理解计算原理 在Linux中,可以使用`bc`命令来进行高精度的数学计算。`bc`是一个任意精度计算器语言,通过它可以方便地实现π值的计算。公式为 `π = 4 * arctan(1)`,在`bc`中可以用 `a(1)*4` 来表示,其中 `a` 是 `bc` 内置的反正切函数。 ### 2. 创建脚本文件 打开终端,使用文本编辑器(如`vim`或`nano`)创建一个新的Shell脚本文件,例如`calc_pi.sh`。 ```bash nano calc_pi.sh ``` ### 3. 编写脚本内容 在打开的编辑器中输入以下内容: ```bash #!/bin/bash # 检查是否提供了精度参数 if [ $# -eq 0 ]; then echo "请提供一个整数作为精度参数,例如:./calc_pi.sh 100" exit 1 fi # 获取用户输入的精度 precision=$1 # 使用bc命令计算π值 pi=$(echo "scale=$precision; a(1)*4" | bc -l) # 输出计算结果 echo "计算得到的π值(精度为 $precision 位):" echo $pi ``` ### 4. 解释脚本内容 - `#!/bin/bash`:指定脚本使用的Shell解释器为`bash`。 - `if [ $# -eq 0 ]; then ... exit 1; fi`:检查用户是否提供了命令行参数。如果没有提供,输出提示信息并退出脚本。 - `precision=$1`:将用户提供的第一个命令行参数赋值给变量`precision`,作为计算π值的精度。 - `pi=$(echo "scale=$precision; a(1)*4" | bc -l)`:使用`bc`命令计算π值,`scale=$precision`设置计算的精度,`a(1)*4`是计算π的公式。 - `echo "计算得到的π值(精度为 $precision 位):"` 和 `echo $pi`:输出计算结果和精度信息。 ### 5. 保存并退出编辑器 在`nano`编辑器中,按下`Ctrl + X`,然后按下`Y`确认保存,最后按下`Enter`键退出。 ### 6. 赋予脚本执行权限 在终端中运行以下命令,赋予脚本执行权限: ```bash chmod +x calc_pi.sh ``` ### 7. 运行脚本 在终端中运行脚本,并提供所需的精度作为参数,例如计算100位精度的π值: ```bash ./calc_pi.sh 100 ``` ### 代码示例 ```bash #!/bin/bash if [ $# -eq 0 ]; then echo "请提供一个整数作为精度参数,例如:./calc_pi.sh 100" exit 1 fi precision=$1 pi=$(echo "scale=$precision; a(1)*4" | bc -l) echo "计算得到的π值(精度为 $precision 位):" echo $pi ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值