Centos7 Shell编程之函数、消息的发送与接收

1. 函数

1.1 函数的命令替换

例如在字符串中进行函数的执行命令替换,如下所示:

[root@bigdata001 ~]# cat test.sh 
#!/usr/bin/sh

filename="$1"_test_$(date +%s)

echo $filename

[root@bigdata001 ~]# 
[root@bigdata001 ~]# sh test.sh bulut
bulut_test_1658480227
[root@bigdata001 ~]#

1.2 系统函数

1.2.1 basename

基本语法:basename [pathname] [suffix]
功能描述:basename去掉最后一个/字符及其前面的所有字符,然后返回剩余的字符。如果指定了suffix,则会将剩余字符的后缀去掉

示例

[root@bigdata001 ~]# basename ./test.sh
test.sh
[root@bigdata001 ~]# 
[root@bigdata001 ~]# basename /root/test.sh .sh
test
[root@bigdata001 ~]#

1.2.2 dirname

基本语法:dirname 文件路径
功能描述:dirname去掉最后一个/字符及其后面的所有字符,然后返回剩余的字符

示例:

[root@bigdata001 ~]# dirname ./test.sh
.
[root@bigdata001 ~]# dirname /root/test.sh
/root
[root@bigdata001 ~]# 
[root@bigdata001 ~]# cat test.sh
#!/usr/bin/sh

# 获取执行脚本的绝对路径
dir=$(cd $(dirname $0); pwd)
echo $dir

[root@bigdata001 ~]# sh ./test.sh
/root
[root@bigdata001 ~]# 

1.3 自定义函数

基本语法

[ function ] funcname[()]
{
    Action
    [return int] 
}

注意:

  • 必须在调用函数地方之前,先声明函数
  • 函数使用$1获取第一个形参,$2获取第二个形参
  • 可以不进行return返回,则函数返回结果为函数体内最后一条命令的运行结果
  • 函数返回值只能是数值(0-255)
  • 函数返回值只能通过$?系统变量获取。可以使用echo返回非数值的函数结果,然后使用函数的命令替换进行函数返回值获取

示例:

[root@bigdata001 ~]# cat test.sh
#!/usr/bin/sh

function sum(){

    add_result=$[$1+$2]
    echo $add_result
    
}

add_result=$(sum 40 60)
echo $add_result

exit

[root@bigdata001 ~]# 
[root@bigdata001 ~]# sh test.sh
100
[root@bigdata001 ~]#

2. 消息的发送与接收

可以利用Linux自带的mesg和write命令,向其它用户的一个终端发送消息

2.1 mesg

查看当前用户是否开启消息功能

[root@bigdata001 ~]# mesg
is y
[root@bigdata001 ~]# 

消息功能的关闭(n)和开启(y)

[root@bigdata001 ~]# mesg n

2.2 write

向指定用户终端发送消息。发送消息的是root用户的pts/0终端,接收消息的是root用户的pts/1终端

[root@bigdata001 ~]# who -T
root     + pts/0        2022-07-23 22:31 (222.244.144.85)
root     + pts/1        2022-07-23 22:38 (222.244.144.85)
[root@bigdata001 ~]# 
[root@bigdata001 ~]# write root pts/1
hello world
china v5
^C[root@bigdata001 ~]#

查看接收到的消息

[root@bigdata001 ~]# 
Message from root@bigdata001 on pts/0 at 22:41 ...
hello world
china v5
EOF

也可以直接用管道符发送消息

[root@bigdata001 ~]# echo -e "hello world\nchina v5" | write root pts/1

效果和上面的一样的

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值