我使用了一个名为ThousandsDotting别名,它为每个3个数字加点.(数千个经典点),因此100000成为100.000

它在shell中工作正常,但是在函数中不起作用。
示例文件example.sh:

#!/bin/bash
function test() {
  echo "100000" | ThousandsDotting
}
alias ThousandsDotting="perl -pe 's/(\d{1,3})(?=(?:\d{3}){1,5}\b)/\1./g'"
test

如果我运行它,这就是我得到的:
$ ./example.sh
example.sh: line 3: ThousandsDotting: command not found.

在我的Bash Shell脚本函数中,将管道(或不使用管道,不管使用它)stdout数据到此perl命令的正确方法是什么?

最佳答案

默认情况下,别名在bash中受限制,因此只需启用它即可。

    #!/bin/bash

    shopt -s expand_aliases
    alias ThousandsDotting="perl -pe 's/(\d{1,3})(?=(?:\d{3}){1,5}\b)/\1./g'"
    function test() {
      echo "100000" | ThousandsDotting
    }
    test

输出
100.000

10-08 14:31