Linux Shell 脚本,$@ 不适用于别名

标签 linux shell

这是我名为 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/

相关文章:

xml - Linux xml 解析

linux - X86 汇编 - 结构点 - 未正确存储/返回?

linux - 为什么 cx_Freeze 在 64 位 Debian Linux 上运行时会生成 32 位可执行文件?

bash - 如何通过 Cygwin 在 Windows 7 上运行 .sh 文件?

php - PHP exec 和 shell_exec 的问题 - Shell 脚本执行

shell - KornShell 脚本 - 当子进程中断时父进程未完成 (TRAP INT)

php - UTF-8贯穿始终

linux - 使用变量作为命令的输入

linux - shell解析csv文件,将字段分配给变量并在多列中打印

bash - 我想连接两个 figlet 输出(不同颜色)