Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ajax/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Bash 将精确参数传递给函数_Bash_Awk - Fatal编程技术网

Bash 将精确参数传递给函数

Bash 将精确参数传递给函数,bash,awk,Bash,Awk,我有一个我经常使用的命令: awk'开始{RS=“dn”}{gsub(“\n”,”);打印$0}' 以我想要的方式解析数据。我没有把它写出来,而是把它保存起来,只要我想使用它,我就随时复制/粘贴它。我想将其转换为一个简单的函数fixline.sh,这样就不用执行以下操作: my_命令| awk'BEGIN{RS=“dn”}{gsub(“\n”,”);print$0}' 每次,我都能做到: my_命令| fixline.sh 但我不知道如何使用bash实现这一点。我试过了 echo“$@”awk'

我有一个我经常使用的命令:

awk'开始{RS=“dn”}{gsub(“\n”,”);打印$0}'

以我想要的方式解析数据。我没有把它写出来,而是把它保存起来,只要我想使用它,我就随时复制/粘贴它。我想将其转换为一个简单的函数
fixline.sh
,这样就不用执行以下操作:

my_命令| awk'BEGIN{RS=“dn”}{gsub(“\n”,”);print$0}'

每次,我都能做到:

my_命令| fixline.sh

但我不知道如何使用
bash
实现这一点。我试过了

echo“$@”awk'开始{RS=“dn”}{gsub(“\n”,”);打印$0}'

但这并不是我想要的。我如何才能做到这一点?

使用函数

fixline() {
    awk 'BEGIN {RS="dn"} {gsub("\n                     ", ""); print $0}'
}
然后只需使用,因为awk可以从标准输入读取数据(正如您已经知道的)

为了完整性,尽管上述方法在所有可能的方面都优于此方法,但对于此特定情况,也可以使用别名

alias fixline='awk '\''BEGIN {RS="dn"} {gsub("\n                     ", ""); print $0}'\'
如果您希望
fixline
接受可选参数,则别名将不起作用。

使用函数

fixline() {
    awk 'BEGIN {RS="dn"} {gsub("\n                     ", ""); print $0}'
}
然后只需使用,因为awk可以从标准输入读取数据(正如您已经知道的)

为了完整性,尽管上述方法在所有可能的方面都优于此方法,但对于此特定情况,也可以使用别名

alias fixline='awk '\''BEGIN {RS="dn"} {gsub("\n                     ", ""); print $0}'\'

如果希望
fixline
接受可选参数,则别名将不起作用。

。我从来没有想过在我的
.bashrc
中将其作为一个函数,但这正是我所希望的。我甚至不想麻烦显示别名。它更难阅读,而且在函数上没有任何价值。太棒了。我从来没有想过在我的
.bashrc
中将其作为一个函数,但这正是我所希望的。我甚至不想麻烦显示别名。它更难读取,并且在函数上没有提供任何值。