《linux命令行与脚本编程大全》笔记二

130 阅读1分钟

1、在shell中 $#  可以表征命令行参数的数量

  • $* 变量和 $@ 变量 这两个变量可以获取所有的参数,只不过 $* 将所有的参数视为一个单词,$@ 将每个参数视为独立的单词

可以使用for进行遍历

image.png

2、从某个文件中读取内容,并做出操作:exec命令允许将STDIN重定向为文件

image.png

4、关闭文件描述符

image.png

5、在linux系统中,null文件的标准位置是/dev/null , 所有重定向到该位置的都会被丢弃

  ls -a > /dev/null

6、如何清除一个文件

image.png

7、如何实现基于一个文件,读取其每一行数据,并每一行生成一个insert语句,将所有的insert语句存入一个sql文件中

image.png

image.png 这行的意思是cat >> $outfile << EOF 这一行表示将下面的文本追加到 $outfile 文件末尾,直到遇到 EOF 结束标记

image.png

这一行是${1}代表待读取的文件

8、linux中存在的信号

image.png

  • Control + c  是 sigint信号
  • Control + z 是 sigtstp 信号

9、如何将某个脚本变成后台运行?

  • 只需要在其启动命令后面加上 & 即可
  • 例如: sh test.sh  &

10、如何在退出了终端会话后,脚本一直在后台运行?

  • 可以使用 nohup
  • 比如: nohub test.sh

11、shell中为什么要用 var1=$[ $var1 - 1 ] 而不是 var1=$var1 - 1

在 Shell 脚本中,var1=$[ $var1 - 1 ] 中使用 $[ ] 表示进行算术运算。这种语法可以确保 Shell 将 $var1 的值作为一个整数进行算术减法运算,并将结果赋值给 var1 变量。

如果使用 var1=$var1 - 1,Shell 将 $var1 和 - 视为两个不同的字符串,而不是一个减号运算符。这将导致脚本无法正确执行算术减法运算,从而使得 var1 的值不是期望的整数值

12、shell中这句程序 while [ $var1 -gt 0 ] 为什么要用[]

在 Shell 脚本中,方括号 [] 是一种测试命令的语法。它们用于测试条件是否为真,并根据测试结果执行不同的操作。在 while 循环中,方括号用于测试 $var1 是否大于 0

14、shell中如何定义函数

shell中有两种方式定义函数

image.png

image.png

14、如何使用函数

直接写出函数名即可

image.png

  • 注意: 使用函数之前,必须要先定义好,不然会报错

15、函数的退出状态码是函数最后一条命令的退出状态码

image.png

  • 函数退出状态码可以用全局变量  $? 来获取

16、可以在函数中return出一个数字,这个数字在 0-255中,return出来后可以用 $? 来获取

image.png

17、如何获取函数的输出

image.png

  • $bb 会获取函数中 echo的输出;

  • $?  会获取函数return出来的输出

18、shell中函数如何传参

image.png

直接写在函数后面,在函数中按照顺序取值

19、在函数内部,假如直接 vvv=“xxx” 是定义全局变量,在函数外部也可以访问;

假如使用  local vvv=“xxx”  local关键字,则是定义局部变量,在函数外部不能访问

image.png

20、函数如何使用递归

image.png

test=$(factorial 22)

21、如何使用公共sh文件中的方法?

image.png

  • 使用souce命令可以运行公共sh文件,公共文件中有add方法