1. basename和dirname提取文件名
1.1. basename
basename [pathname] [suffix]
basename [string] [suffix]
suffix为后缀,如果suffix被指定了,basename会将pathname或string中的suffix去掉。
$ basename /Users/user/test.png
test.png
$ basename /Users/user/test.png .png
test
1.2. dirname
该命令的作用是从路径中提取出目录名,使用方法为 dirname NAME
dirname /Users/user/test.png
/Users/user
2 获取当前进程的绝对路径
第一种
cur_dir=$(cd "$(dirname "$0")"; pwd)
第二种
SHELL_FOLDER=$(dirname $(readlink -f "$0"))
3. shell参数获取
常用参数:
$?:显示最后命令的执行情况
$#:传递到脚本的参数个数
$0:Shell 的命令本身
1到9:表示 Shell 的第几个参数
$$:脚本运行的当前进程 ID 号
$*:以一个单字符串显示所有向脚本传递的参数
$!:后台运行的最后一个进程的 ID 号
$-:显示 Shell 使用的当前选项
4. 例子
#!/bin/bash
echo "\$0:Shell 的命令本身"
echo "$0"
echo "1到9:表示 Shell 的第几个参数"
echo "\$? :显示最后命令的执行情况"
echo "$?"
echo "\$#:传递到脚本的参数个数"
echo "$#"
echo "\$\$:脚本运行的当前进程 ID 号 "
echo "$$"
echo "\$*:以一个单字符串显示所有向脚本传递的参数 "
echo "$*"
echo "\$!:后台运行的最后一个进程的 ID 号"
echo "$!"
echo "\$-:显示 Shell 使用的当前选项 "
echo "$-"
cur_dir=$(cd "$(dirname "$0")"; pwd)
echo "当前绝对路径:$(pwd)"
echo "当前绝对路径:$cur_dir"
SHELL_FOLDER=$(dirname $(readlink -f "$0"))
echo "当前绝对路径:$SHELL_FOLDER"
输出
➜ ~ ./shell-test/path-test.sh
$0:Shell 的命令本身
./shell-test/path-test.sh
1到9:表示 Shell 的第几个参数
$? :显示最后命令的执行情况
0
$#:传递到脚本的参数个数
0
$$:脚本运行的当前进程 ID 号
47253
$*:以一个单字符串显示所有向脚本传递的参数
$!:后台运行的最后一个进程的 ID 号
$-:显示 Shell 使用的当前选项
当前绝对路径:/home/ubuntu
当前绝对路径:/home/ubuntu/shell-test
当前绝对路径:/home/ubuntu/shell-test