我想在unix中devisebash脚本,这个bash返回完整path,因为我想在其他地方使用这个文件。
你正在寻找正在运行的脚本的完整path和文件名?
#!/bin/bash
_my_name = basename $0
如果[“ echo $0 | cut -c1 ”=“/”]; 然后
_my_path=`dirname $0`
其他
_my_path=`pwd`/`echo $0 | sed -es/$_my_name//`
科幻
回声“文件名:$ _my_name”
回声“绝对path:$ _my_path”
回声“完整path+名称:$ 0”
如果您的系统上有readlink ,请尝试一下:
readlink -e filename
由于这个问题并没有试图回答将具有符号链接的path转换为物理path(而不是任何链接)的难题,而只是获得原始脚本的目录和/或完整path,所以存在更简单的解决scheme(在本例中分解为易读性的组件,另外您可能要单独使用这些组件):
#!/bin/bash PROG_PATH=${BASH_SOURCE[0]} # this script's name PROG_NAME=${PROG_PATH##*/} # basename of script (strip path) PROG_DIR=$(cd "$(dirname "${PROG_PATH:-$PWD}")" 2>/dev/null 1>&2 && pwd) echo "script directory is: $PROG_DIR"
你的testing用例应该包含调用这个脚本的绝对path,相对path,“采购”等等,并且总是以包含脚本的目录结束。