Shell编程(二)
上一章:
Shell编程_做测试的喵酱的博客-CSDN博客
七、ping
shell脚本,是一个面向过程的编程语言,没有类和对象的概念。用的最多的就是函数。
查看当前服务,是否能ping通baidu
ping www.baidu.com
[root@ecs-39233 dev]# ping www.baidu.com
PING www.a.shifen.com (110.242.68.4) 56(84) bytes of data.
64 bytes from 110.242.68.4 (110.242.68.4): icmp_seq=1 ttl=49 time=10.2 ms
64 bytes from 110.242.68.4 (110.242.68.4): icmp_seq=2 ttl=49 time=10.2 ms
64 bytes from 110.242.68.4 (110.242.68.4): icmp_seq=3 ttl=49 time=10.2 ms
64 bytes from 110.242.68.4 (110.242.68.4): icmp_seq=4 ttl=49 time=10.2 ms
64 bytes from 110.242.68.4 (110.242.68.4): icmp_seq=5 ttl=49 time=10.2 ms
^C
--- www.a.shifen.com ping statistics ---
5 packets transmitted, 5 received, 0% packet loss, time 4005ms
rtt min/avg/max/mdev = 10.214/10.225/10.236/0.111 ms
在当前屏幕,会持续输出ping的内容。
我想实现,ping 只打印一行输出内容。
查看ping 的帮助文档。
ping --help
查看ping的详细介绍文档
man ping
ping -c 可以实现打印行数的控制。 -c1打印一行, -c2打印两行
ping -c1 www.baidu.com
[root@ecs-39233 dev]# ping -c1 www.baidu.com
PING www.a.shifen.com (110.242.68.4) 56(84) bytes of data.
64 bytes from 110.242.68.4 (110.242.68.4): icmp_seq=1 ttl=49 time=10.2 ms--- www.a.shifen.com ping statistics ---
1 packets transmitted, 1 received, 0% packet loss, time 0ms
rtt min/avg/max/mdev = 10.232/10.232/10.232/0.000 ms
八、2>&1
linux中的2>&1是什么_2&>1_康大壮的博客-CSDN博客
Linux 中 2>&1 详解_2>&1_迎风悟极道的博客-CSDN博客
8.1 1和2在Linux中的含义
在Linux系统中0 1 2是一个文件描述符:
标准的输入,输出和错误输出分别表示为STDIN,STDOUT,STDERR,也可以用0,1,2来表示。
名称 | 代码 | Linux 下文件描述符(Debian 为例) |
标准输入(stdin) | 0 | /dev/stdin -> /proc/self/fd/0 -> /dev/pts/0 |
标准输出(stdout) | 1 | /dev/stdout -> /proc/self/fd/1 -> /dev/pts/0 |
标准错误输出(stderr) | 2 | /dev/stderr -> /proc/self/fd/2 -> /dev/pts/0 |
其中0表示键盘输入 1表示屏幕输出 2表示错误输出。
8.2 2>&1的含义
2>&1的含义:将标准错误输出重定向到标准输出。
注意:符号>&是一个整体,不可分开,分开后就不是上述含义了。
8.3 举例
8.3.1 command >/dev/null 2>&1 &
command 我们写的指令
> 重定向
/dev/null 表示空设备文件,相当于垃圾桶
2 标准错误输出
1 标准输出
2>&1的含义:将标准错误输出重定向到标准输出。注意:2>&1,中间不能有空格。
注意:符号>&是一个整体,不可分开,分开后就不是上述含义了。
command>/dev/null ,它默认等于command 1>/dev/null ,即将标准输出结果重定向到/dev/null
2>&1, 将标准错误输出重定向到标准输出 。标准输出1,已经被重定向到了/dev/null,错误输出重定向到标准输出,则错误输出也被重定向到了/dev/null
最后一个&, 是让该命令在后台执行。
8.3.2 command >out.file 2>&1 &
command >out.file 是将command的输出重定向到out.file文件,输出内容不打印到屏幕上,而是输出到out.file文件中。
2>&1 是将标准出错重定向到标准输出,因为标准输出已经重定向到了out.file文件,所以标准出错也输出到out.file文件中。
最后一个&, 是让该命令在后台执行。
九、函数
9.1 定义函数的格式
定义函数,有2种方式。
定义函数,方式一
函数名()
{命令1命令2....
}
命令1,前的空格一般空四个 。
定义函数,方式二
使用function 关键字
function 函数名
{命令1命令2...
}
命令1,前的空格一般空四个 。使用function 定义函数时,函数名后没有括号。
举例:
创建 study_shell.sh
#!/bin/bash
# author: miao
# date: 2023# 方法一,打印当前登录用户名称和时间
print_user()
{echo -e "Hello ${USER},date: $(date)"
}# 方法二,打印当前路径function print_pwd
{echo "$(pwd)"
}# 调用方法一
print_user# 调用方法二print_pwd
注意:
调用变量的格式,${USER}
调用方法的格式, $(date)
执行 study_shell.sh
[root@ecs-39233 chenshuai]# sh study_shell.sh
Hello root,date: Tue Apr 18 07:31:08 CST 2023
/chenshuai