如何在bash中使用不同参数重用命令?

时间:2008-10-14 20:12:50

标签: bash command-line scripting

我有两个脚本经常需要使用相同的参数运行:

$ populate.ksh 9241 && check.ksh 9241

当我需要更改参数(在此示例中为 9241 )时,我可以返回并编辑历史记录中的行。但由于我需要改变两个地方的数字,我有时会打错字。我希望能够只更改一次参数以在两个地方更改它。

4 个答案:

答案 0 :(得分:10)

在bash中:

!!:gs/9241/9243/

是的,它使用的是gs///,而不是s///g。 : - )

(zigdon的答案使用以pop开头的最后一个命令,例如populate.sh。我的答案使用最后一个命令,完全停止。选择适合你的命令。)

答案 1 :(得分:5)

您还可以使用历史记录替换功能:

!pop:gs/9241/1234

像这样:

$ populate.ksh 9241 && check.ksh 9241
...
$ !pop:gs/9241/1234
populate.ksh 1234 && check.ksh 1234
...

答案 2 :(得分:1)

一种解决方案是简单地创建一个依次调用脚本的包装器脚本( populate_check.ksh ):

r=$1
populate.ksh $r && check.ksh $r

或多个参数:

for r; do
   populate.ksh $r && check.ksh $r
done

对于更短暂的任务,您还可以参数化命令,以便在历史记录中更容易编辑:

$ r=9241; populate.ksh $r && check.ksh $r

或者一次做几个:

$ for r in 9241 9242; do populate.ksh $r && check.ksh $r; done

答案 3 :(得分:1)

已经给出了正确的答案,但为了更一般的理解,请阅读联机帮助页,特别注意“History Expansion”以及相关的shell变量(例如“HISTCONTROL”, “histchars”等)。 BTW--阅读man bash

时,您的寻呼机搜索功能非常有用
相关问题