![如何修剪没有基本名称的输出目录?](https://linux22.com/image/228244/%E5%A6%82%E4%BD%95%E4%BF%AE%E5%89%AA%E6%B2%A1%E6%9C%89%E5%9F%BA%E6%9C%AC%E5%90%8D%E7%A7%B0%E7%9A%84%E8%BE%93%E5%87%BA%E7%9B%AE%E5%BD%95%EF%BC%9F.png)
对于 shell 脚本,我需要按名称调用可执行文件,无论通向那里的路径如何;到目前为止,我知道这段代码报告了正确的名称:
tmpprog=`which program`
prog=${tmpprog%%*/}
if $prog=""
then
echo >&2 "Main Program not found"
else
echo >&2 "$prog"
fi
如何剪切代码,以便可以修剪路径以保留可执行文件名称并在一行中删除路径?
注意:basename
不会这样做,因为我可能正在混合环境(windoze 上的 cygwin/busybox)上工作,有时路径有空格。
答案1
看起来您所需要做的就是检查是否program
可用作命令,然后:
#! /bin/sh -
hash program || exit
# use program now:
program with its args
我在用着hash
而不是command -v > /dev/null
ashash
会报告错误,如果program
找不到保存必须自己做。任何状况之下,你不想使用which
。