【问题标题】:Locally defined alias not working inside a bash script本地定义的别名在 bash 脚本中不起作用
【发布时间】:2022-10-24 05:20:46
【问题描述】:

我正在尝试在脚本中定义一个别名alias echod='echo -e "\033[0;31m"'(它以红色打印文本),因此不需要导入 .bashrc。

但是一旦我使用它,我就会得到一个错误:

./.AVVIO.sh: riga 23: echod: command not found
./.AVVIO.sh: riga 24: echod: command not found

我的代码是(行号在方括号中):

#.AVVIO.sh

[10]   DEBUG_COLOR='\033[0;31'



[19]   alias echod='echo -e \"${DEBUG_COLOR}\"'



[23]   echod "\$# = [$#]"
[24]   echod "\$1 = [$1]"

我希望以红色打印的代码(第一个参数和参数号)

【问题讨论】:

  • bash manual: "当 shell 不交互时,别名不会展开,除非扩展别名外壳选项设置使用商店。”
  • 同样在 bash 手册中:“对于几乎所有目的,别名都被 shell 函数所取代。”

标签: linux bash echo alias


【解决方案1】:

使用一个函数。例如:

#!/bin/sh

DEBUG_COLOR=$(tput setaf 1)
RESET=$(tput setaf 9)

echod() { printf "%s%s%s
" "$DEBUG_COLOR" "$*" "$RESET"; }

echod "$# = [$#]"
echod "$1 = [$1]"

【讨论】:

    猜你喜欢
    • 2021-10-30
    • 1970-01-01
    • 2012-10-16
    • 2011-03-02
    • 2011-09-04
    • 1970-01-01
    相关资源
    最近更新 更多