我使用名为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工具
我如何从windows上的DLL从DLL调用函数?
根据文本文件中的单词检查用户input
模拟鼠标点击而不移动光标
将variables传递给C中的系统函数
批处理脚本传递多个参数来调用
windows批处理函数从参数中删除特殊字符
在C ++中传递函数指针
在shell中执行之前检查一个函数是否存在
windows自带文件中的.bat / .cmd函数库?
别名在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
总结以上是内存溢出为你收集整理的Linux shell脚本:在函数中使用别名全部内容,希望文章能够帮你解决Linux shell脚本:在函数中使用别名所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)