对于 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
。