系统自带的函数,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] }
注意
实战
[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