bash:如何正确地将basename转换为字符串?

Fat*_*oke 3 bash

这是我的片段:

__VERSION="0.0.1"
__COMMAND="${basename}"
__USAGE="$__COMMAND -abc args"
if [ $# == 0 ] ; then
    echo "Usage: ${__USAGE}"
    exit 1;
fi
Run Code Online (Sandbox Code Playgroud)

每次我运行它我得到:

用法:-abc args

当我期待输出为:

用法:filename -abc args

我试过了:

__COMMAND =基名

__COMMAND = basename $ 0

__COMMAND = "$名前缀"

__COMMAND = "$ {}基本名"

__COMMAND ="$ {basename $ 0}"

尽管在某些情况下错误有所不同,但它们都没有奏效.

这样做的正确方法是什么?

Car*_*rum 8

正确的是你唯一没试过的:

__COMMAND=$(basename $0)
Run Code Online (Sandbox Code Playgroud)

但你根本不需要basename.你可以使用bash参数扩展:

__COMMAND=${0##*/}
Run Code Online (Sandbox Code Playgroud)