【问题标题】:Using argument variables in an alias [duplicate]在别名中使用参数变量[重复]
【发布时间】:2020-02-20 01:53:03
【问题描述】:

在 Windows 10 上使用 Cygwin。 在 ~/.bashrc 中,我写:

test=hola
alias add_hello="echo $1; echo hello"
alias add_hello2="echo $test; echo hello"

当两者都运行时,会导致:

$add_hello hola
hello hola
$add_hello2
hola hello

为什么这些会以不同的顺序运行?我试过取消它们的别名,并在不使用 .bashrc 的情况下简单地重新定义它们,但问题是一样的。另外,编写一个名为“add_hello”的脚本:

#!/bin/bash
echo $1; echo hello

会起作用:

$./add_hello hola
hola 
hello

【问题讨论】:

  • 无法找到您。你能详细说明一下吗..

标签: bash scripting alias


【解决方案1】:

当您从 bashrc 调用 $1 时,您期望它是什么,您的 $1 永远不会打印,因为您在别名中提到了它但没有设置它。因为它是空的,所以 echo 没有打印它。(echo "'<nothing here> hello' aa")

-->alias add_hello="echo hello"
-->add_hello aa       #< this is same as echo "'hello' aa"
-->hello aa          

最好在 bashrc 文件中尝试 bash 函数:

add_hello()
{
echo 'hello'
echo "$1"
}

【讨论】:

  • 哦,我现在明白了。我期待它像脚本一样运行,其中 $1 将引用别名的“参数”,但我发现它的工作方式不同。谢谢
【解决方案2】:

您的第一次测试add_hello hola 结果

echo $1; echo hello holla

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-09-22
    • 2015-01-29
    • 2019-10-29
    • 2012-09-13
    • 1970-01-01
    • 2011-05-25
    • 2019-04-20
    • 1970-01-01
    相关资源
    最近更新 更多