我有一个我编写的脚本 的/ usr / bin中/ UPS
在这个脚本中,我用这个打印用法:
if [ ! $# == 1 ]; then
echo "Usage: $0 {start|stop|restart|status}"
exit
fi
当我运行命令“ups”时,我得到了这个:
用法:/ usr / bin / ups {start | stop | restart | status}
如何打印这样的用法:
用法:ups {start | stop | restart | status}
最简单的方法是:
if [ ! $# == 1 ]; then
echo "Usage: ups {start|stop|restart|status}"
exit
fi
但如果有一天我更改了此文件的名称,则使用文本将与之前(ups)相同。
有一个很好的方法吗?
答案 0 :(得分:4)
使用basename
:
echo "Usage: $(basename $0) {start|stop|restart|status}"
答案 1 :(得分:2)
您可以更改
$0
到
${0##*/}
答案 2 :(得分:1)
你可以这样做:
echo "Usage: ${0##*/} {start|stop|restart|status}"
答案 3 :(得分:0)
basename /usr/bin/ups # outputs ups
答案 4 :(得分:0)
不确定这是否是最好的方法,但你可以这样做:
COMMAND_NAME=${0##*/}
if [ "$(which $COMMAND_NAME 2> /dev/null)" != "$0" ]; then
COMMAND_NAME=$0
fi
if [ ! $# == 1 ]; then
echo "Usage: $COMMAND_NAME {start|stop|restart|status}"
exit
fi
将使用which命令确定您是否正在从PATH运行该程序。然后显示Usage: ups {start|stop|restart|status}
,但如果您使用相对路径,则会显示该路径:Usage: ../../usr/bin/ups {start|stop|restart|status}
。
这很方便,因为如果你把它从PATH中取出它仍然可以正常工作。