例如在字符串中进行函数的执行命令替换,如下所示:
[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 ~]#
基本语法:basename [pathname] [suffix]
功能描述:basename去掉最后一个/字符及其前面的所有字符,然后返回剩余的字符。如果指定了suffix,则会将剩余字符的后缀去掉
示例:
[root@bigdata001 ~]# basename ./test.sh
test.sh
[root@bigdata001 ~]#
[root@bigdata001 ~]# basename /root/test.sh .sh
test
[root@bigdata001 ~]#
基本语法: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 ~]#
基本语法:
[ function ] funcname[()]
{
Action
[return int]
}
注意:
示例:
[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 ~]#
可以利用Linux自带的mesg和write命令,向其它用户的一个终端发送消息
查看当前用户是否开启消息功能
[root@bigdata001 ~]# mesg
is y
[root@bigdata001 ~]#
消息功能的关闭(n)和开启(y)
[root@bigdata001 ~]# mesg n
向指定用户终端发送消息。发送消息的是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
效果和上面的一样的