linux - 在 bash 脚本中调用别名命令

标签 linux bash

我想为带有标志的特定命令创建别名

arc diff --preview

我创建了以下 bash 函数

arc(){
if [ "$1" = "diff" ] && [ "$2" = "--preview" ] ; then
    echo -n "Message example? (y/n)? "
    read answer
    if [ "$answer" != "${answer#[Yy]}" ] ;then
    arc $@
    else
    echo No
    fi
else
  echo "$2"
fi
}

不幸的是,在说"is"或输入不同的命令后(例如 arc pull)
我正在输入相同的提示符“消息示例?(y/n )?" 因为我再次调用 arc
我该如何避免?

最佳答案

您再次调用同一个函数。如果 arc 是外部命令,则执行 command arc $@。这将避免调用您定义的函数,并调用在 PATH 中找到的外部可执行文件。

arc(){
if [ "$1" = "diff" ] && [ "$2" = "--preview" ] ; then
    echo -n "Message example? (y/n)? "
    read answer
    if [ "$answer" != "${answer#[Yy]}" ] ;then
    command arc "$@"
    else
    echo No
    fi
else
  echo "$2"
fi
}

关于linux - 在 bash 脚本中调用别名命令,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52289202/

相关文章:

bash - 在 bash 中用(下划线)_ 替换空格的最简单方法

bash - bash中如何确定哪一对伪tty端口相互连接

regex - 带反引号的 grep 正则表达式匹配所有行

bash - bash 中文件名模式的 Simil-group-by

linux - 面对shell脚本中的文件夹路径问题

c - 进程之间如何共享内存区域

c++ - LD_PRELOAD 是否适用于所有版本的 unix/linux?

linux - 在 sed 反向引用替换中转义双引号

linux - awk 删除行/记录并将其移动到第三个字段值为空的另一个文件

c - 一个进程写入,而另一个进程读取共享内存