我使用名为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.
什么是正确的方式pipe道 (或使用它没有pipe道,无论)标准输出数据到这个perl命令在我的Bash shell脚本的函数?
用java写一个linux工具
模拟鼠标点击而不移动光标
将variables传递给C中的系统函数
批处理脚本传递多个参数来调用
在C ++中传递函数指针
别名在bash中默认是有限制的,所以启用它。
#!/bin/bash shopt -s expand_aliases alias ThousandsDotting="perl -pe 's/(d{1,5}b)/1./g'" function test() { echo "100000" | ThousandsDotting } test
产量
100.000
在BASH 别名不被继承 。
ThousandsDotting() { perl -pe 's/(d{1,5}b)/1./g' "$1"; }
然后,您可以将其用作流程替换 :
ThousandsDotting <(echo "100000") 100.000
alias在交互式bash 。 更改
#!/bin/bash
至
#!/bin/bash -i
从man bash :
如果存在-i选项,则该shell是交互式的。
别名不在bash中扩展,不能用作宏 。 您可以启用它们,有关更多信息请参阅BASH的永久指南http://tldp.org/LDP/abs/html/aliases.html 。
你可以像使用bash提供的常规工具一样实现宏:
#!/bin/bash function test() { echo "100000" | perl -pe 's/(d{1,5}b)/1./g' } test
您可以通过使函数具有参数来改善这种情况:通过这种方式,您可以将任何参数传递给函数test获得您使用别名时的准确值:
#!/bin/bash function test() { perl -pe 's/(d{1,5}b)/1./g' "$1" } test 100000
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。