Shell函数
作者:互联网
Shell函数
系统函数
系统自带的函数,Linux自带的一些命令就是系统已经封装好的函数,下面简单介绍两个系统函数用法
basename:用于打印末尾目录或者文件的基本名称
查看基本用法
[root@zookeeper1 shell]# basename --help
Usage: basename NAME [SUFFIX]
or: basename OPTION... NAME...
Print NAME with any leading directory components removed.
If specified, also remove a trailing SUFFIX.
Mandatory arguments to long options are mandatory for short options too.
-a, --multiple support multiple arguments and treat each as a NAME
-s, --suffix=SUFFIX remove a trailing SUFFIX
-z, --zero separate output with NUL rather than newline
--help 显示此帮助信息并退出
--version 显示版本信息并退出
Examples:
basename /usr/bin/sort -> "sort"
basename include/stdio.h .h -> "stdio"
basename -s .h include/stdio.h -> "stdio"
basename -a any/str1 any/str2 -> "str1" followed by "str2"
basename 目录名/文件名:获取末尾目录名或者文件名
[root@zookeeper1 shell]# basename /home/root/
root
[root@zookeeper1 shell]# basename /home/root/java
java
basename 文件名 文件后缀:获取末尾文件名称,同时去掉文件后缀
[root@zookeeper1 shell]# basename /home/root/java/test.java .java
test
basename -s 文件后缀 文件名:-s选项和上面一条的命令效果一样
[root@zookeeper1 shell]# basename -s .java /home/root/java/test.java
test
basename -a 目录1/文件1 目录2/文件2:-a选项可以同时输出多个目录或者文件名称
[root@zookeeper1 shell]# basename -a /home/root/java/test.java /home/root/java/hello.java
test.java
hello.java
[root@zookeeper1 shell]# basename -a -s .java /home/root/java/test.java /home/root/java/hello.java
test
hello
dirname:去除文件名中的非目录部分
dirname命令读取指定路径名保留最后一个/及其后面的字符,删除其他部分,并写结果到标准输出。如果最后一个/后无字符,dirname 命令使用倒数第二个/,并忽略其后的所有字符
查看基本用法
[root@zookeeper1 shell]# dirname --help
用法:dirname [选项] 名称...
Output each NAME with its last non-slash component and trailing slashes
removed; if NAME contains no /'s, output '.' (meaning the current directory).
-z, --zero separate output with NUL rather than newline
--help 显示此帮助信息并退出
--version 显示版本信息并退出
Examples:
dirname /usr/bin/ -> "/usr"
dirname dir1/str dir2/str -> "dir1" followed by "dir2"
dirname stdio.h -> "."
实战
[root@zookeeper1 shell]# cat route.sh
#!/bin/bash
# 输出不带后缀的文件名称
echo "文件名:$(basename $0 .sh)"
# 输出文件的绝对路径
echo "文件绝对路径:$(cd $(dirname $0);pwd)"
[root@zookeeper1 shell]# ./route.sh
文件名:route
文件绝对路径:/home/user01/java/shell
自定义函数
基本语法([ ] 里面表示是可选值)
[ function ] funname[()] {
Action
[return int]
}
注意
- 必须在调用函数地方之前,先声明函数,shell 脚本是逐行运行,不会像其它语言一 样先编译
- 函数返回值,只能通过 $? 系统变量获得,可以显示加:return 返回;如果不加,将 以最后一条命令运行结果,作为返回值;只能return 数值,且数值范围是 0-255
实战
[root@zookeeper1 shell]# cat fun.sh
#!/bin/bash
function sum(){
sum=$[$1+$2]
# 这里不能直接返回sum,因为返回值范围是0-255,一旦sum的值超过255则返回的值不准备
# return sum
# 可以直接输出sum
echo $sum
}
read -p "请输入第一个数:" a
read -p "请输入第二个数:" b
# 直接调用函数输出sum
# sum $a $b
# 获取函数值再输出,这种方法更灵活,可以对函数值做一些运算或者其他操作
value=$(sum $a $b)
echo $value
[root@zookeeper1 shell]# ./fun.sh
请输入第一个数:77
请输入第二个数:77
154
标签:Shell,java,函数,--,basename,shell,root,zookeeper1 来源: https://www.cnblogs.com/Y-wee/p/16196948.html