这是我名为 t.sh 的脚本:
#! /bin/sh
alias hls='ls -h'
shopt -s expand_aliases
hls / # try 1
$@ # try2
当我尝试运行脚本时:
./t.sh hls /
“try 1”行运行良好,但“try 2”行不起作用,报告错误hls:找不到命令
。
有谁知道原因以及如何解决吗?提前致谢。
最佳答案
来自man bash
:
Aliases are expanded when a command is read, not when it is executed.
另一方面,解释$@
是“参数扩展”,并且与所有扩展一样,它是执行简单命令的一部分。到那时,别名扩展时间就结束了。
这将做你想要的:
eval "$@"
关于Linux Shell 脚本,$@ 不适用于别名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54140100/