我按如下方式创建了两个别名:
alias echo1 'echo \!#:1'; - Echo first argument
alias echo2 'echo \!#:2'; - Echo second argument
然后echo1 foo fee
- > foo
和echo2 foo fee
- > fee
然而,
echo1 fee; echo2 fuu fii; -> fee (only)
而,
echo2 fuu fii; echo1 fee; -> fii, fii
当别名放在由分号分隔的单行上时,第二个命令的参数来自第一个命令的输出,而不是使用第二组参数。这对我来说似乎是违反直觉的。我希望用分号分隔的两个命令产生相同的结果,就好像它们是在不同的行上发出的那样,但显然并非如此。好像有一个暗示的管道。有谁知道为什么?
使用两个逗号分隔的命令定义单个别名时会发生同样的行为。我无法弄清楚如何使每个命令索引后面的参数。