shell编程之基础

时间:2023-12-17 22:27:44

1、初探shell


#!/bin/bash
echo -e 'hello \nworld'

执行结果

shell编程之基础

echo 是打印输出字符,-e选项是开启转义功能

注意:

在windows下编写的shell脚本直接拿到linux下是无法执行的,因为两个的行结束标志不同

  • 直接将windows下的文件copy到linux,查看其格式

  shell编程之基础

  在图中的bash后面是一个回车,通过cat -A 来查看文件中所有字符时可看到这个回车是^M$

  • 查看linux下的回车

  shell编程之基础

两个的行结束标志不同,所以会导致shell脚本执行不成功

  • 解决方式,通过dos2unix来进行格式转换

  shell编程之基础

2.历史命令


shell编程之基础

  • 执行history

  shell编程之基础

  想要执行哪条命令使用 !行号

shell编程之基础

  甚至用!字符串,如!hist都可以执行该命令

3.输出重定向


  • cat hello.sh > he.sh将标准输出重定向到he.sh,先清空he.hs再将结果输出到he.sh

  • cat hello.sh >> he.sh 以追加的方式输出到he.sh中
  • cat hello.sh 2> he.sh 将标准出错输出到文件中
  • cat hello.sh  &>  hello.sh 将正确和错误都写到文件中
  • ls >> tfg 2>>efg   将命令的正确结果保存到tfg,将错误结果保存早efg中

4.shell中的通配符


shell编程之基础

特殊字符

  ‘bbb\nbbb$name’   单引号中的字符都被认为是普通字符

  “bbbb\nbbb$name”  双引号中的字符被赋予特殊含义,如\n表示转义,$name表示一个变量

$() 将会引用系统命令,如 echo $(date) 与 date的效果一样

5.shell中的变量


  • 变量值的拼接

  name =  123

  name = ${name}456

  这时name的值为123

  • 接受用户向sh脚本中传递的值

  shell编程之基础

  一个简单的例子

  shell编程之基础

  shell编程之基础

  这里进行了数字相加运算,两个变量在数值相加的时候必须使用$(())将其包起来

  •  $* 与 $@

  $*是将输入参数看成一个整体,像字符串;而$@将参数分开对待,就像一个数组

  shell编程之基础

  shell编程之基础

6、预定义变量


  shell编程之基础

  shell编程之基础

  代码中的& 是让find命令在后台运行

  shell编程之基础