bash:如何正确地将basename放入字符串中?

bash:如何正确地将basename放入字符串中?,bash,Bash,以下是我的片段: __VERSION="0.0.1" __COMMAND="${basename}" __USAGE="$__COMMAND -abc args" if [ $# == 0 ] ; then echo "Usage: ${__USAGE}" exit 1; fi 每次运行时,我都会得到: 用法:-abc args 当我期望输出为: 用法:filename-abc args 我试过: __COMMAND=basename __COMMAND=basename$0

以下是我的片段:

__VERSION="0.0.1"
__COMMAND="${basename}"
__USAGE="$__COMMAND -abc args"
if [ $# == 0 ] ; then
    echo "Usage: ${__USAGE}"
    exit 1;
fi
每次运行时,我都会得到:

用法:-abc args

当我期望输出为:

用法:filename-abc args

我试过:

__COMMAND=basename

__COMMAND=basename$0

__COMMAND=“$basename”

__COMMAND=“${basename}”

__COMMAND=“${basename$0}”

虽然在某些情况下错误有所不同,但没有一个是有效的


正确的方法是什么?

正确的方法是你唯一没有尝试的方法:

__COMMAND=$(basename $0)
但是您根本不需要
basename
。您只需使用bash参数展开:

\uuuu命令=${0###*/}

谢谢:那么,$(…)和${…}之间有什么区别呢?我认为${…}基本上算作“输出…”你检查过手册了吗<代码>${…}只进行变量替换
$(…)
运行命令并替换其输出。