我知道,我知道,我应该使用现代的shell ...无论如何,所以这里是别名:
  alias p4client echo `p4 info | perl -ne 's/Client name: (.*)$/print $1/e'` 
我也知道可能有更好的方法来获取p4客户端名称.这只是一个例子.那么,当我调用别名而不是评估何时创建别名时,有人能告诉我一个很好的,干净的方法来评估这个吗?
唯一的技巧是反斜杠转义单引号并用单引号包围其他所有内容:
alias p4client 'echo `p4 info | perl -ne '\''s/Client name: (.*)$/print $1/e'\''`'
虽然perl可以简化:
alias p4client 'echo `p4 info | perl -ne '\''print /Client name: (.*)/'\''`'
并且回声和``说捕获输出这些命令打印并打印它; 只是打印输出(只有perl包含换行而不是从p4输出中剥离它只是让echo重新添加它):
alias p4client 'p4 info | perl -ne '\''print /Client name: (.*)/s'\'
虽然现在没有什么双引号不友好留在那里,所以:
alias p4client "p4 info | perl -ne 'print /Client name: (.*)/s'"
除了在p4client之后没有=之外,这里没有什么不同于你在bash中的表现.