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
中将其作为一个函数,但这正是我所希望的。我甚至不想麻烦显示别名。它更难读取,并且在函数上没有提供任何值。