三十分钟学会Shell(下)

Shell

在这里插入图片描述

3.1 运算符

3.1.1 算数运算符

在Shell脚本中,算术运算符用于执行基本的数学运算。Shell支持多种算术运算符,包括加、减、乘、除等。以下是关于Shell算术运算符的一些方法以及相应的示例说明:

加法:
a=10
b=20
c=$((a + b))
echo $c  # 输出:30

$((a + b))表示把ab的值相加,并将结果赋给变量c

减法:
a=30
b=20
c=$((a - b))
echo $c  # 输出:10

$((a - b))表示把ab的值相减,并将结果赋给变量c

乘法:
a=10
b=20
c=$((a * b))
echo $c  # 输出:200

$((a * b))表示把ab的值相乘,并将结果赋给变量c

除法:
a=30
b=3
c=$((a / b))
echo $c  # 输出:10

$((a / b))表示把ab的值相除,并将结果赋给变量c。需要注意的是,如果除数为0,会导致脚本执行错误。

取余:
a=30
b=4
c=$((a % b))
echo $c  # 输出:2

$((a % b))表示把a除以b的余数,并将结果赋给变量c

自增:
a=10
((a++))
echo $a  # 输出:11

((a++))表示将变量a的值自增1,即等价于a = a + 1

自减:
a=10
((a--))
echo $a  # 输出:9

((a--))表示将变量a的值自减1,即等价于a = a - 1

通过这些算术运算符,可以在Shell脚本中执行基本的数学运算,对变量进行自增和自减操作。需要注意的是,算术运算符需要使用$((...))((...))语法进行运算,而不能直接使用数学表达式。

3.1.2 关系运算符

在Shell脚本中,关系运算符用于比较两个值之间的关系,返回布尔值(真或假)。Shell提供了多种关系运算符,包括 -eq-ne-gt-lt-ge-le,分别用于判断相等、不相等、大于、小于、大于等于和小于等于等关系。以下是关于Shell关系运算符的详细介绍以及相应的示例说明:

-eq:相等

-eq用于判断两个值是否相等,如果相等则返回true。

示例:

a=10
b=10
if [ $a -eq $b ]; thenecho "a 等于 b"
fi

输出:

a 等于 b
-ne:不相等

-ne用于判断两个值是否不相等,如果不相等则返回true。

示例:

a=10
b=20
if [ $a -ne $b ]; thenecho "a 不等于 b"
fi

输出:

a 不等于 b
-gt:大于

-gt用于判断左边的值是否大于右边的值,如果是则返回true。

示例:

a=30
b=20
if [ $a -gt $b ]; thenecho "a 大于 b"
fi

输出:

a 大于 b
-lt:小于

-lt用于判断左边的值是否小于右边的值,如果是则返回true。

示例:

a=30
b=40
if [ $a -lt $b ]; thenecho "a 小于 b"
fi

输出:

a 小于 b
-ge:大于等于

-ge用于判断左边的值是否大于等于右边的值,如果是则返回true。

示例:

a=30
b=30
if [ $a -ge $b ]; thenecho "a 大于等于 b"
fi

输出:

a 大于等于 b
-le:小于等于

-le用于判断左边的值是否小于等于右边的值,如果是则返回true。

示例:

a=30
b=30
if [ $a -le $b ]; thenecho "a 小于等于 b"
fi

输出:

a 小于等于 b

通过使用这些关系运算符,可以在Shell脚本中进行条件判断,根据不同的关系运算结果执行相应的操作。需要注意的是,关系运算符需要在方括号中使用,并且变量周围需要有空格,以确保运算符正确解析。

3.1.3 逻辑运算符

在Shell脚本中,逻辑运算符用于对多个条件进行逻辑操作,返回布尔值(真或假)。Shell提供了多种逻辑运算符,包括逻辑或(-o||)、逻辑与(-a&&)、逻辑非(!)等。以下是关于Shell逻辑运算符的详细介绍以及相应的示例说明:

逻辑或(-o 或 ||)

-o|| 表示逻辑或运算符,左右两边的条件只要有一个满足就返回 true。

示例:

a=10
b=20
if [ $a -eq 10 -o $b -eq 30 ]; thenecho "a 等于 10 或者 b 等于 30"
fi

输出:

a 等于 10 或者 b 等于 30
逻辑与(-a 或 &&)

-a&& 表示逻辑与运算符,左右两边的条件都满足才返回 true。

示例:

a=10
b=20
if [ $a -eq 10 -a $b -eq 20 ]; thenecho "a 等于 10 并且 b 等于 20"
fi

输出:

a 等于 10 并且 b 等于 20
逻辑非(!)

! 表示逻辑非运算符,对条件取反,如果条件为假,则返回 true。

示例:

a=10
if ! [ $a -eq 20 ]; thenecho "a 不等于 20"
fi

输出:

a 不等于 20

可以组合使用逻辑运算符,实现复杂的条件判断。例如,使用逻辑或和逻辑与运算符进行混合操作:

示例:

a=10
b=20
c=30
if [ $a -eq 10 -a $b -ne 30 ] || [ $c -gt 20 ]; thenecho "a 等于 10 并且 b 不等于 30,或者 c 大于 20"
fi

输出:

a 等于 10 并且 b 不等于 30,或者 c 大于 20

通过使用这些逻辑运算符,可以在Shell脚本中对多个条件进行逻辑操作,根据不同的逻辑运算结果执行相应的操作。需要注意的是,在条件判断语句中,逻辑运算符需要在方括号中使用,并且变量周围需要有空格,以确保运算符正确解析。

3.1.4 字符串运算符

在Shell脚本中,字符串运算符用于对字符串进行操作,返回布尔值(真或假)。Shell提供了多种字符串运算符,包括 -n-z=~==!=<>-le-ge 等。以下是关于Shell字符串运算符的详细介绍以及相应的示例说明:

-n:非空

-n 用于判断字符串是否为非空,如果非空则返回 true。

示例:

a="hello"
if [ -n $a ]; thenecho "a 不为空"
fi

输出:

a 不为空
-z:空

-z 用于判断字符串是否为空,如果为空则返回 true。

示例:

a=""
if [ -z $a ]; thenecho "a 为空"
fi

输出:

a 为空
=~:匹配正则表达式

=~ 用于匹配字符串与正则表达式,如果匹配成功则返回 true。

示例:

a="hello world"
if [[ $a =~ "world" ]]; thenecho "a 包含 world"
fi

输出:

a 包含 world
==:等于

== 用于判断两个字符串是否相等,如果相等则返回 true。

示例:

a="hello"
b="hello"
if [ $a == $b ]; thenecho "a 等于 b"
fi

输出:

a 等于 b
!=:不等于

!= 用于判断两个字符串是否不相等,如果不相等则返回 true。

示例:

a="hello"
b="world"
if [ $a != $b ]; thenecho "a 不等于 b"
fi

输出:

a 不等于 b
<:小于

< 用于判断一个字符串是否小于另一个字符串,如果是则返回 true。

示例:

a="apple"
b="banana"
if [ $a \< $b ]; thenecho "a 小于 b"
fi

输出:

a 小于 b
>:大于

> 用于判断一个字符串是否大于另一个字符串,如果是则返回 true。

示例:

a="banana"
b="apple"
if [ $a \> $b ]; thenecho "a 大于 b"
fi

输出:

a 大于 b
-le:小于等于

-le 用于判断一个字符串是否小于或等于另一个字符串,如果是则返回 true。

示例:

a="apple"
b="banana"
c="apple"
if [ $a \<= $b ] && [ $a -le $c ]; thenecho "a 小于等于 b,并且 a 小于等于 c"
fi

输出:

a 小于等于 b,并且 a 小于等于 c
-ge:大于等于

-ge 用于判断一个字符串是否大于或等于另一个字符串,如果是则返回 true。

示例:

a="banana"
b="apple"
c="banana"
if [ $a \>= $b ] && [ $a -ge $c ]; thenecho "a 大于等于 b,并且 a 大于等于 c"
fi

输出:

a 大于等于 b,并且 a 大于等于 c

通过使用这些字符串运算符,可以在Shell脚本中对字符串进行条件判断,根据不同的字符串运算结果执行相应的操作。需要注意的是,在条件判断语句中,字符串运算符需要在方括号中使用,并且变量周围需要有空格,以确保运算符正确解析。

3.1.5 文件测试运算符

Shell 提供了丰富的文件测试运算符,用于检查文件的各种属性。下面是对一些常用的文件测试运算符的详细介绍以及相应的示例说明:
在这里插入图片描述

-e:文件存在

-e 用于检查文件是否存在,如果文件存在则返回 true。

示例:

file="example.txt"
if [ -e $file ]; thenecho "$file 存在"
fi

输出:

example.txt 存在
-f:普通文件

-f 用于检查文件是否为普通文件,而不是目录或设备文件等特殊类型的文件。如果是普通文件则返回 true。

示例:

file="example.txt"
if [ -f $file ]; thenecho "$file 是普通文件"
fi

输出:

example.txt 是普通文件
-d:目录

-d 用于检查文件是否为目录,如果是目录则返回 true。

示例:

dir="example"
if [ -d $dir ]; thenecho "$dir 是目录"
fi

输出:

example 是目录
-s:非空文件

-s 用于检查文件是否为非空文件,如果文件大小大于0则返回 true。

示例:

file="example.txt"
if [ -s $file ]; thenecho "$file 是非空文件"
fi

输出:

example.txt 是非空文件
-r:可读

-r 用于检查文件是否可读,如果文件可读则返回 true。

示例:

file="example.txt"
if [ -r $file ]; thenecho "$file 可读"
fi

输出:

example.txt 可读
-w:可写

-w 用于检查文件是否可写,如果文件可写则返回 true。

示例:

file="example.txt"
if [ -w $file ]; thenecho "$file 可写"
fi

输出:

example.txt 可写
-x:可执行

-x 用于检查文件是否可执行,如果文件可执行则返回 true。

示例:

file="script.sh"
if [ -x $file ]; thenecho "$file 可执行"
fi

输出:

script.sh 可执行
-nt 和 -ot:新于和旧于

-nt 用于检查文件是否比另一个文件新,而 -ot 用于检查文件是否比另一个文件旧。这两个运算符可以用于比较文件的时间戳。

示例:

file1="file1.txt"
file2="file2.txt"
if [ $file1 -nt $file2 ]; thenecho "$file1$file2 新"
fi

输出:

file1.txt 比 file2.txt 新

通过使用这些文件测试运算符,可以在Shell脚本中轻松地检查文件的存在性、类型、权限以及时间戳等属性,从而根据文件的状态执行相应的操作。这些运算符为Shell脚本编程提供了强大的文件操作能力。

3.2 test命令

test命令是用于在Shell脚本中进行条件测试的工具,它也可以用方括号 [ ] 的形式来使用,因为test其实就是方括号的另一种表示方式。test命令接受不同的选项和参数,用于测试文件属性、字符串比较、算术比较等,根据测试结果返回不同的退出状态码,以便在Shell脚本中进行条件判断。

下面是test命令的一些常用选项和示例说明:

  1. 测试文件属性:

    • 用法:test -e file

    • 描述:检查文件是否存在。

    • 示例:

      file="example.txt"
      if test -e $file; thenecho "$file 存在"
      fi
      
  2. 字符串比较:

    • 用法:test string1 = string2

    • 描述:检查两个字符串是否相等。

    • 示例:

      str1="hello"
      str2="world"
      if test $str1 = $str2; thenecho "两个字符串相等"
      fi
      
  3. 整数比较:

    • 用法:test int1 -eq int2

    • 描述:检查两个整数是否相等。

    • 示例:

      num1=10
      num2=20
      if test $num1 -eq $num2; thenecho "两个整数相等"
      fi
      
  4. 文件比较:

    • 用法:test file1 -nt file2test file1 -ot file2

    • 描述:-nt 用于检查文件1是否比文件2新,而 -ot 用于检查文件1是否比文件2旧。

    • 示例:

      file1="file1.txt"
      file2="file2.txt"
      if test $file1 -nt $file2; thenecho "$file1$file2 新"
      fi
      
  5. 复合条件测试:

    • 用法:test condition1 -a condition2test condition1 -o condition2

    • 描述:-a 表示逻辑与(and),-o 表示逻辑或(or)。

    • 示例:

      num=15
      if test $num -gt 10 -a $num -lt 20; thenecho "$num 大于10并且小于20"
      fi
      

除了直接使用test命令以外,你也可以使用方括号的形式来进行条件测试,例如:

file="example.txt"
if [ -e $file ]; thenecho "$file 存在"
fi

无论是使用test命令还是方括号形式,它们都能够帮助你在Shell脚本中进行条件判断,根据测试结果执行相应的操作。

3.3 Shell流程控制

Shell脚本中的流程控制可以帮助我们根据条件或循环来决定代码的执行路径。主要的流程控制结构包括条件语句(if-else)、循环语句(for、while、until)和跳转语句(break、continue)等。

下面是对Shell的流程控制结构的详细介绍以及相应的示例说明:

  1. 条件语句(if-else):

    • 用法:

      if condition; then# 条件为真时执行的代码块
      else# 条件为假时执行的代码块
      fi
      
    • 描述:根据给定的条件判断,决定执行哪个代码块。

    • 示例:

      num=10
      if [ $num -gt 0 ]; thenecho "数字大于0"
      elseecho "数字小于等于0"
      fi
      
  2. 循环语句(for):

    • 用法:

      for var in list; do# 循环体内执行的代码块
      done
      
    • 描述:遍历列表中的元素,每次迭代将列表中的一个元素赋值给变量,并执行对应代码块。

    • 示例:

      fruits=("apple" "banana" "orange")
      for fruit in ${fruits[@]}; doecho "水果:$fruit"
      done
      
  3. 多选择语句(case):

    • 用法:

      case value inpattern1)# 匹配模式1时执行的代码块;;pattern2)# 匹配模式2时执行的代码块;;pattern3|pattern4)# 匹配模式3或模式4时执行的代码块;;*)# 以上模式都不匹配时执行的代码块;;
      esac
      
    • case 语句为多选择语句。可以用case语句匹配一个值与一个模式,如果匹配成功,执行相匹配的命令。

    • 示例:

      #!/bin/bashfruit="apple"
      case $fruit in"apple")echo "Selected fruit is Apple";;"banana")echo "Selected fruit is Banana";;"orange"|"kiwi")echo "Selected fruit is Orange or Kiwi";;*)echo "Unknown fruit";;
      esac
  4. 循环语句(while):

    • 用法:

      while condition; do# 循环体内执行的代码块
      done
      
    • 描述:只要条件为真,就会一直执行循环体内的代码块。

    • 示例:

      num=1
      while [ $num -le 5 ]; doecho "当前数字:$num"num=$((num + 1))
      done
      
  5. 循环语句(until):

    • 用法:

      until condition; do# 循环体内执行的代码块
      done
      
    • 描述:只要条件为假,就会一直执行循环体内的代码块。

    • 示例:

      num=1
      until [ $num -gt 5 ]; doecho "当前数字:$num"num=$((num + 1))
      done
      
  6. 跳转语句(break):

    • 用法:break

    • 描述:跳出当前循环或选择结构,继续执行循环或选择结构之后的代码。

    • 示例:

      for num in 1 2 3 4 5; doif [ $num -eq 3 ]; thenbreakfiecho "当前数字:$num"
      done
      
  7. 跳转语句(continue):

    • 用法:continue

    • 描述:跳过当前循环中余下的代码,进入下一次循环迭代。

    • 示例:

      for num in 1 2 3 4 5; doif [ $num -eq 3 ]; thencontinuefiecho "当前数字:$num"
      done
      

通过使用这些流程控制结构,你可以根据条件或循环来控制Shell脚本中的代码执行。这些结构提供了灵活性和可扩展性,使得Shell脚本能够处理各种不同的情况和需求。

3.4 Shell函数

在Shell脚本编程中,函数是一种重要的流程控制结构,用于封装一段可重复使用的代码块。通过定义函数,你可以将一组相关的操作组合在一起,并在需要时调用它们。下面是对Shell的流程控制函数的详细介绍以及相应的示例说明:

1. 定义函数:
function_name() {# 函数体内执行的代码块# 可以包含变量、命令、流程控制语句等
}

或者

function function_name {# 函数体内执行的代码块# 可以包含变量、命令、流程控制语句等
}
2. 调用函数:
function_name
3. 函数的示例说明:
#!/bin/bash# 定义一个简单的函数
say_hello() {echo "Hello, World!"
}# 调用函数
say_hello

在上面的示例中,我们定义了一个名为say_hello的函数,它的功能是输出"Hello, World!"。然后,我们通过调用say_hello函数来执行这段代码。

函数还可以接受参数,允许你向函数传递数据。下面是一个带有参数的函数的示例:

#!/bin/bash# 定义一个带有参数的函数
greet() {name=$1echo "Hello, $name!"
}# 调用函数,并传递参数
greet "Alice"

在上面的示例中,我们定义了一个名为greet的函数,它接受一个参数name。函数体内将参数赋值给变量name,然后输出"Hello, $name!“。通过调用greet函数并传递参数"Alice”,我们可以输出"Hello, Alice!"。

函数还可以返回值,在Shell脚本中使用return语句来实现。下面是一个带有返回值的函数的示例:

#!/bin/bash# 定义一个带有返回值的函数
add_numbers() {num1=$1num2=$2sum=$(($num1 + $num2))return $sum
}# 调用函数,并接收返回值
result=$(add_numbers 10 20)
echo "Sum: $result"

在上面的示例中,我们定义了一个名为add_numbers的函数,它接受两个参数num1num2,计算它们的和并将结果赋给变量sum。然后,我们使用return语句返回sum的值。通过调用add_numbers函数并将返回值赋给变量result,我们可以输出"Sum: 30"。

通过使用函数,你可以将一段代码封装起来,提高代码的可重用性和可维护性。函数可以接受参数、返回值,并且可以包含变量、命令、流程控制语句等,让你的Shell脚本更加灵活和功能强大。

4. Shell脚本必须以.sh后缀结尾吗

不是必须的,可以不加.sh。但扩展名sh代表shell,可以让人看到后缀就知道是shell脚本,是一种命名规范,所以建议加上。

在Linux中,脚本的后缀并不影响其是否可以执行。Shell脚本的可执行性是根据文件的权限属性来确定的。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/163846.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【第二部分:结构】ARM Realm Management Monitor specification

目录 概念Realm概述Realm执行环境Realm寄存器Realm内存Realm处理器功能IMPDEF系统寄存器 Realm属性Realm活性Realm生命周期状态状态转换 Realm参数Realm描述符 颗粒Granule颗粒属性颗粒所有权颗粒生命周期状态状态转换颗粒抹除 Realm执行上下文概述REC属性REC指数和MPIDR值REC生…

洞悉今日,把握明日:咨询公司的关键策略揭秘

在快节奏且充满不确定性的商业环境中&#xff0c;能够洞悉当前市场动态并预测未来趋势的企业更有可能获得成功。咨询公司在这个过程中扮演着关键角色&#xff0c;本文将探讨咨询公司如何帮助企业洞悉现状并把握未来趋势&#xff0c;以及他们运用的关键策略。 咨询公司的市场洞察…

百度地图,地市区域描边

描边首先需要各个点的经纬度数据 json数据下载 直接复制粘贴进入页面ctrls保存就可以了。 如果需要某省中的各个地市描边可以点击这个省的进行下载&#xff0c;这里以山东为例&#xff0c;我是先下载了山东的json数据,但是发现只有山东省下各个市的描边&#xff0c;于是又下了中…

Mac下载的软件显示文件已损坏,如何解决文件已损坏问题,让文件可以正常运行

Mac下载的软件显示文件已损坏&#xff0c;如何解决文件已损坏问题&#xff0c;让文件可以正常运行 设备/引擎&#xff1a;Mac&#xff08;11.6&#xff09;/Mac Mini 开发工具&#xff1a;终端 开发需求&#xff1a;让显示已损坏的文件顺利安装到电脑 大家肯定都遇到过下载…

ESP32 MicroPython 颜色及二维码识别⑫

ESP32 MicroPython 颜色及二维码识别⑫ 1、颜色识别2、二维码识别 1、颜色识别 使用AI颜色识别功能&#xff0c;可以实现颜色辨别、颜色追踪等应用。颜色识别模型内置有9种常见的颜色识别和一种颜色学习识别模式。他们分别是&#xff1a; ai.COLOR_RED 表示识别红色 ai.COLOR…

【Linux】关系运算符、shell判断脚本执行时是否有传参、判断文件/文件夹是否存在、判断字符串是否相等、判断上个命令执行是否正常、判断字符串是否为空

&#x1f984; 个人主页——&#x1f390;个人主页 &#x1f390;✨&#x1f341; &#x1fa81;&#x1f341;&#x1fa81;&#x1f341;&#x1fa81;&#x1f341;&#x1fa81;&#x1f341; 感谢点赞和关注 &#xff0c;每天进步一点点&#xff01;加油&#xff01;&…

全网最详细的安装pytorch GPU方法,一次安装成功!!包括安装失败后的处理方法!

文章目录 前提---查看是否有NVIDIV英伟达显卡【笑哭】一、查看电脑的显卡驱动版本方法一&#xff1a;在cmd命令窗口中输入nvidia-smi&#xff0c;可以发现版本为12.2方法2&#xff1a;点击NVIDIA控制面板→系统信息 二、安装CUDA方法1&#xff1a; 在pytorch官网https://pytorc…

Redis高可用之主从复制及哨兵模式

一、Redis的主从复制 1.1 Redis主从复制定义 主从复制是redis实现高可用的基础&#xff0c;哨兵模式和集群都是在主从复制的基础之上实现高可用&#xff1b; 主从复制实现数据的多级备份&#xff0c;以及读写分离(主服务器负责写&#xff0c;从服务器只能读) 1.2 主从复制流…

学习Python和深度学习基础

1. Python基础知识 学习Python的基本语法、数据类型、控制流等基础知识。掌握常用的Python库&#xff0c;如NumPy和Pandas&#xff0c;它们在深度学习中经常被使用。 2. 深度学习基础 了解深度学习的基本概念&#xff0c;包括神经网络、前向传播、反向传播等。学习深度学习框…

Disasm 示例程序改写和适配

Disasm 示例程序改写和适配 简介 用途 可用于反汇编x86的二进制汇编文件&#xff0c;展示出来内部的反汇编原理和流程。原由 最近在看<<C 反汇编与逆向分析技术揭秘>>这本书籍&#xff0c;在第一张的简介中我们可以看到ProViem这个反汇编开源工具的内容&#x…

无线收发器芯片Si24R1 兼容替代NRF24L01

Si24R1是一款工作在2.4-2.5GHz世界通用ISM频段的单片无线收发器芯片。无线收发器包括&#xff1a;频率发生器、集成嵌入式ARQ基带协议引擎、功率放大器、晶体振荡器调制器、解调器。输出功率频道选择和协议的设置可以通过SPI接口进行设置。是目前2.4G无线射频芯片中&#xff0c…

Java 文件处理工具类详解

在软件开发中,文件处理是一个常见的任务,我们经常需要读取、写入和管理文件。为了更便捷地处理文件相关操作,我们编写了一个 FileUtils 工具类,提供了一些有用的文件处理方法。 工具类介绍 FileUtils 工具类包含了一些常用的文件处理方法,主要功能如下: 获取统一的文件…

Git本地库操作

对本地库的操作很少&#xff0c;我们学习1~6节即可&#xff0c;其他了解下。我们可以在idea中完成对本地库还有远程库的操作&#xff0c;可视化界面用起来更加舒适而且也不会混淆。 1. Git概述 Git 是一个免费的、开源的分布式版本控制系统&#xff0c;可以快速高效地处理从小…

[个人笔记] Windows配置OpenSSH免密连接

Windows - 运维篇 第七章 Windows配置OpenSSH免密连接 Windows - 运维篇系列文章回顾Windows配置OpenSSH免密连接参考来源 系列文章回顾 第一章 迁移WinSrv系统到虚拟机 第二章 本地安全策略xcopy实现实时备份文件夹内容 第三章 利用cmd自带的icacls命令导出文件的ACL权限 第四…

JavaScript启动本地应用程序

JavaScript调起本地应用程序 以下内容&#xff0c;自定义部分我也还未经过实际验证&#xff0c;酌情查看。 文章目录 JavaScript调起本地应用程序确定协议调用协议传参自定义写入协议获取参数 在浏览器中通过 JavaScript调起本地应用程序的一个可行方法就是 通过协议调起。 …

git 文件被莫名其妙的或略且无论如何都查不到哪个.gitignore文件忽略的

先说解决办法&#xff1a;git check-ignore -v [文件路径] 这个命令会返回一个忽略规则&#xff0c;以及该规则在哪个文件中定义的&#xff0c;该规则使得指定的文件被忽略。 1.遇到的问题 同项目组&#xff0c;其他同学都可以正常的提交.meta文件&#xff0c;我的提交就出现以…

Oracle通过MyBatis执行批量插入与更新问题

最近看一个老项目&#xff0c;使用的Oracle数据库&#xff0c;发现要使用MyBatis执行批量操作还是不太一样。 下面我们来看一下&#xff0c;Oracle数据库&#xff0c;如何使用MyBatis来批量插入和更新。 批量插入 因为Oracle和MySQL的insert还不太一样&#xff0c;Oracle不能…

canal本地安装和使用

1、组件版本 canal.deployer-1.1.7 kafka_2.13-2.6.0 jdk8 apache-zookeeper-3.6.0-bin mysql5.7 2、解压canal.deployer-1.1.7 2.1、修改canal.properties配置文件 ##改为kafka canal.serverModekafka## 改为instance canal.destinations instance## 改为true&#x…

STM32——独立看门狗

文章目录 一、看门狗基础介绍&#xff08;一&#xff09;看门狗概述&#xff1a;&#xff08;二&#xff09;看门狗的作用&#xff1a;&#xff08;三&#xff09;看门狗的原理&#xff1a;&#xff08;四&#xff09;为什么需要使用看门狗来提高系统的可靠性&#xff1a;&…