shell 脚本

1.shell变量

定义变量语法:变量名=值 your_name="mx"

定义变量规则

  • 变量名和等号之间不能有空格
  • 变量命名只能使用英文字母,数字和下划线,首个字符不能以数字开头

使用变量:${变量名} :使用一个定义过的变量,只要在变量名前面加美元符号即可。变量名外面的花括号是可选的,加不加都行。推荐给所有变量加上花括号,这是个好的编程习惯。

2.shell 中的 命令分隔符 ;

语法: command1 ; command2 ; command3

shell的一条命令需要独占一个物理行,如果需要将 多条命令放在同一行,命令之间要使用命令分隔符 ; 来分隔。 

3.exit  n 命令 和 $?exit 命令 使shell退出,也就是 手动结束脚本运行  参数n表示带返回值n退出调用环境就可以根据这个返回值判断 这个程序运行是否成功。exit 0: 表示在调用环境 使用 $? 就会返回0。0一般代表正常

参考 Shell $?:获取函数返回值或者上一个命令的退出状态

 例如:如果两个脚本,脚本a 和 脚本b 。 在脚本b中调用脚本a,需要在脚本b中判断脚本a的执行结果是否正常返回。

#调用 脚本a
if[$? -eq 0]
then
   echo "正常"
fi

4. Shell 特殊符号   管道符号 |  

用法: command 1 | command 2  功能是把第一个命令command 1执行的结果作为command 2的输入传给command 2

#执行结果是一样的 都是把zcat文件的第1列和第4列输出到屏幕上
[root@VM_0_8_centos bin]# cat zcat | awk '{print $1 $4}'
[root@VM_0_8_centos bin]#  awk '{print $1 $4}' zcat

5.  Shell 特殊符号   $$ 当前Shell进程ID Shell特殊变量:Shell $0, $#, $*, $@, $?, $$和命令行参数 

[root@VM_0_8_centos lib]# echo "pid is $$"
pid is 28336

6.echo 字符串输出命令 Shell echo命令

#echo 输出字符串
[root@VM_0_8_centos lib]# echo "this is test"
this is test
#echo 输出变量 用$()符号
[root@VM_0_8_centos lib]# echo "$(TZ=GMT-8 date +%Y-%m-%d+%H:%M:%S+%A)"
2020-03-19+18:11:11+Thursday
[root@VM_0_8_centos ~]# echo "PID IS $$" >> file
[root@VM_0_8_centos ~]# echo "now is $(date +%Y-%m-%d+%H:%M:%S)" >>file
[root@VM_0_8_centos ~]# cat file
PID IS 1441
now is 2020-03-19+18:36:10

7.shell 输入输出重定向  Shell 输入/输出重定向

command >  file 将输出 重定向到file,如果file不存在,自动创建。

command >> file 将输出以追加的方法 重定向到file,如果file不存在,自动创建

[root@VM_0_8_centos ~]# echo "PID IS $$" >> file
[root@VM_0_8_centos ~]# echo "now is $(date +%Y-%m-%d+%H:%M:%S)" >>file
[root@VM_0_8_centos ~]# cat file
PID IS 1441
now is 2020-03-19+18:36:10

重定向符号 > 可以用来创建 或者清空文件

#如果file文件存在,就清空文件
#如果file文件不存在,就创建 空文件file
[root@VM_0_8_centos ss]# >file

8  /dev/null Linux 特殊文件,相当于一个垃圾箱。任何重定型到 /dev/null文件的内容都会被丢弃。

  • 删除返回结果
  • 清空文件内容
#把执行结果 重定向到 /dev/null ====== 删除结果
[root@VM_0_8_centos mm]# echo "this is ah" | grep "ah" > /dev/null
#2.把/dev/null重定向到文件 ======== 清空file1文件内容
[root@VM_0_8_centos mm]# cat /dev/null > file1

9.Linux的命令运行时的3个文件  一般情况下,每个 Unix/Linux 命令运行时都会打开三个文件

  • 标准输入文件(stdin):stdin的文件描述符为0,Unix程序默认从stdin读取数据。
  • 标准输出文件(stdout):stdout 的文件描述符为1,Unix程序默认向stdout输出数据。
  • 标准错误文件(stderr):stderr的文件描述符为2,Unix程序会向stderr流中写入错误信息

把标准输出和错误输出 都重定向的垃圾箱,也就是删掉输出,不管是文件存在的标准输出还文件不存在的错误输出

#把标准输出1 重定向到 /dev/null
#把错误输出2 重定向到 标准输出 也就是/dev/null
root@VM_0_8_centos ~]# ls file 1> /dev/null 2>&1
[root@VM_0_8_centos ~]# ls file1 1> /dev/null 2>&1

 

posted on 2020-03-25 17:58  dreamstar  阅读(57)  评论(0编辑  收藏  举报