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