在别名中使用参数变量

时间:2019-10-23 18:44:08

标签: bash scripting alias

在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

2 个答案:

答案 0 :(得分:2)

从bashrc调用$1时,您期望$1是什么,您的echo "'<nothing here> hello' aa"不会被打印出来,因为您在别名中提到了它,但没有进行设置。由于它为空,所以echo不会打印它。(-->alias add_hello="echo hello" -->add_hello aa #< this is same as echo "'hello' aa" -->hello aa

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

最好在bashrc文件中尝试bash功能:

{{1}}

答案 1 :(得分:1)

您的第一个测试add_hello hola的结果

echo $1; echo hello holla
相关问题