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

相关文章

### 创建一个gRPC服务项目(grpc服务端)和一个 webapi项目(...
一、SiganlR 使用的协议类型 1.websocket即时通讯协议 2.Ser...
.Net 6 WebApi 项目 在Linux系统上 打包成Docker镜像,发布为...
一、 PD简介PowerDesigner 是一个集所有现代建模技术于一身的...
一、存储过程 存储过程就像数据库中运行的方法(函数) 优点:...
一、Ueditor的下载 1、百度编辑器下载地址:http://ueditor....