shell笔记

本文详细介绍了在Bash脚本中进行数学运算的方法,包括使用let、[]、(())、expr及bc命令实现基本及浮点数运算,并通过示例展示了如何比较浮点数。

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

一:exit(0)与exit(1)、return区别

       exit函数是退出应用程序,删除进程使用的内存空间,并将应用程序的一个状态返回给OS,这个状态标识了应用程序的一些运行信息,这个信息和机器和操作系统有关,一般是 0 为正常退出, 非0 为非正常退出。

       return返回函数值,是关键字,它表示了调用堆栈的返回,退出函数。

二:数学运算

  简单运算:let,[ ],(( ))

    高级运算:expr,bc

1、let

  let是bash内置命令,可以实现简单的算术运算和逻辑运算

#!/bin/bash


i=10
echo $i

let a=i+100
echo "a="$a
let b=$i+100
echo "b="$b

》10
》a=110
》b=110

  

2.[ ]

#!/bin/bash


i=10
echo $i
a=$[i+100]
echo "a="$a

b=$[$i+100]
echo "b="$b

》10
》a=110
》b=110

3.(( )) 

#!/bin/bash


i=10
echo $i
a=$((i+100))
echo "a="$a
b=$(($i+100))
echo "b="$b


》10
》a=110
》b=110

4.expr

#!/bin/bash


i=10
echo $i

#变量和运算符之间没有空格
a=`expr $i+100`
echo "a="$a
#当变量和运算符有空格
b=`expr $i + 100`
echo "b="$b

》10
》a=10+100
》b=110
      

5.bc

 bc命令是一个支持精确的浮点运算的高级计算器,支持数学函数调用。

#!/bin/bash


i=10
j=3
a=`expr $i / $j`
echo "a="$a

b=`expr "scale=9; $i / $j" |bc`
echo "b="$b
~             

》a=3
》b=3.333333333

 

二:浮点数的比较

-eq 相等

-gt 大于

-lt小于

-a或者&& 和

-o或者||  或

#!/bin/bash

i=0.6

if [ $(echo "${i} >0" |bc) = 1 ];then
   echo "1111"
else
  echo "2222"
fi


》1111

  

 

转载于:https://www.cnblogs.com/yaohong/p/9191923.html

### 超哥 Shell 编程笔记与教程 超哥的 Shell 编程笔记主要聚焦于基础概念、特殊变量以及子串操作等内容[^1]。以下是一些关键点: #### 一、Shell 编程基础 在 Shell 编程中,特殊变量是理解脚本逻辑的核心部分之一。例如 `$0` 表示脚本名称,`$1` 到 `$n` 表示传递给脚本的参数,而 `$$` 则表示当前进程的 PID[^3]。 #### 二、子壳(Subshell)行为 子壳的行为需要注意,其内部定义的变量无法被父壳访问。此外,当退出子壳时,会按照嵌套层次逐步退出,类似于嵌套的 `for` 循环结构中的 `break` 操作[^2]。 #### 三、循环控制语句 以一个简单的 `for` 循环为例,可以使用 `continue` 或 `break` 来控制循环流程。例如,在下面的代码中,当变量 `i` 等于 4 时,跳过当前循环并继续执行下一次循环: ```bash #!/bin/bash # 演示 continue 的用法 for (( i=1; i<=10; i=i+1 )) # 循环十次 do if [ "$i" -eq 4 ]; then # 如果变量 i 的值等于 4 continue # 跳过本次循环 fi echo $i # 输出变量 i 的值 done ``` 上述代码展示了如何通过条件判断来改变循环的行为[^3]。 #### 四、文件遍历 在实际应用中,Shell 脚本常用于文件或目录的遍历操作。以下是一个遍历指定路径下的文件并输出其路径的示例: ```bash #!/bin/bash # 遍历 /home/user 开头的路径 for file in /home/user* do if [ -f "$file" ]; then # 判断是否为文件 echo "File: $file" elif [ -d "$file" ]; then # 判断是否为目录 echo "Directory: $file" fi done ``` 这段代码结合了 `-f` 和 `-d` 测试选项,分别检查变量 `$file` 是否为文件或目录[^4]。 #### 五、系统命令集成 如果需要将脚本作为系统命令运行,可以将其放置在系统的可执行路径中(如 `/bin` 或 `/sbin` 目录)。这样可以通过简单的命令名直接调用脚本[^2]。 ### 总结 超哥的 Shell 编程笔记提供了从基础到实践的全面指导,包括特殊变量、子壳行为、循环控制以及文件遍历等内容。这些知识点对于初学者和进阶用户都具有很高的参考价值。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值