bash - 修改 BASH 脚本以处理我告诉它的任何文件

标签 bash shell unix

我编写了一个 bash 脚本来运行一系列命令,最终生成一个名为 DataAudit.txt 的文件。如果我正在使用的文件恰好名为 file.csv,它会很好用。

我对这一切都很陌生,不知道如何编写脚本,以便它可以在我想要审核的任何文件上运行。

名为 audit.sh 的脚本位于名为 PurgatoryCSV 的文件夹中,其想法是我将一个文件放入其中,运行该脚本,然后移动将文件发送到我工作流程的下一步。

如果我能在解决这个障碍时获得任何帮助,我将不胜感激。

这是脚本:

#!/bin/bash

echo -n "DATA AUDIT

------------
COLUMN NAMES
------------

" > DataAudit.txt
csvcut -n file.csv >> DataAudit.txt
echo -n "

---------------------------------------
FIRST TEN ROWS OF FIRST FIVE COLUMNS 
---------------------------------------

" >> DataAudit.txt
csvcut -c 1,2,3,4,5 file.csv | head -n 10 >> DataAudit.txt
echo -n "

------------
COLUMN STATS
------------

" >> DataAudit.txt
csvcut file.csv | csvstat >> DataAudit.txt
echo -n "

---END AUDIT" >> DataAudit.txt

最佳答案

您可以使用从命令行传入的变量:第一个为 $1,第二个为 $2,依此类推。看起来这里有两个变量、file.csvDataAudit.txt

如果将 file.csv 替换为 $1,并将 DataAudit.txt 替换为 $2,您现在可以执行您的脚本通过执行以下操作:

./audit.sh myotherfile.csv MyOtherAudit.txt

或者为了提高可读性,通常将它们分配给脚本顶部的命名变量:

INPUTFILE=$1
OUTPUTFILE=$2

然后,在您的代码中,您可以使用 $INPUTFILE$OUTPUTFILE 引用这些内容

关于bash - 修改 BASH 脚本以处理我告诉它的任何文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7934035/

相关文章:

git - Jenkins Git Publisher 标签不检测环境变量

Git 获取行编辑时间

bash - 仅当“git diff”输出某些内容时,如何运行另一个 git 命令?

linux - 绕过 Linux 集群网关 - 从桌面直接进入节点

bash - 变量值在子 shell 中丢失

linux - 执行从文件中读取的 curl 命令

Shell 脚本将命令列表作为输入,尝试执行它们,但失败了

bash - 管道命令输出到 tee 但也保存命令的退出代码

unix - 在 Unix m/c 中创建目录的 Zip

shell - 在一个非常愚蠢的 shell 中添加/减去变量