gpt4 book ai didi

linux - 压缩 Bash 脚本以解析文件

转载 作者:IT王子 更新时间:2023-10-29 00:36:41 25 4
gpt4 key购买 nike

我有这个 pases 文本文件的 bash 脚本,我想让它更简单一些,更短一些,以提高效率,有人对我如何做到这一点有任何想法吗?

$vi

function displayHelp
{
echo "Use '-f' to set the file to be used "
echo "Use '-s' to sort the data bya column"
echo "Use '-m' to output the rows which match this expression"
}

function displayColumn
{
columnnumber="$2"
awk '{print $'$columnnumber'}' $1

}

function displayParameter
{
parameter="$3"
columnnumber="$2"
awk -v s=$3 -v c=$2 '$c ~ s { print $0 }' $1
}

while getopts f:s:m:h opt
do
case "$opt" in
h) displayHelp;;
f) filepath="$OPTARG";;
s) column="$OPTARG"
displayColumn $filepath $column
;;
m) searchParam="$OPTARG"
displayParameter $filepath $column $searchParam
;;

esac
done

最佳答案

displayColumn() 中,您没有使用 -v 变量传递,但在 displayParameter() 中您使用了。您应该始终使用 -v 而不是嵌入 shell 变量。

同样在 displayParameter() 中,您分配了两个变量并且从不使用它们。

在扩展时,您应该始终引用 shell 变量。当它们单独出现时,没有必要在作业的右侧引用它们。

没有强制要求 -f 是必需的,如果这是您想要的。如果不提供它(及其必需的参数),您的脚本将尝试从 stdin 读取(这可能是您想要的)。

没有强制要求 -m-s 是必需的。如果两者都不存在,AWK 命令将输出一条错误消息。

一般来说,必需的参数应该作为位置参数处理,选项标志应该用于选项(及其参数)。

您的问题可能更适合 Code Review .

关于linux - 压缩 Bash 脚本以解析文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10402274/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com