微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Linux shell脚本:在函数中使用别名

我使用名为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

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐