![运行脚本时将文件名作为输入](https://linux22.com/image/178219/%E8%BF%90%E8%A1%8C%E8%84%9A%E6%9C%AC%E6%97%B6%E5%B0%86%E6%96%87%E4%BB%B6%E5%90%8D%E4%BD%9C%E4%B8%BA%E8%BE%93%E5%85%A5.png)
我创建了一个 shell 脚本,它从 csv 文件 A (INPUT.csv) 读取,然后从数据创建临时文件,执行一些操作并创建另一个 csv 文件 B。最后它合并两个文件 INPUT.csv 和 B一起生成 FinalOutput.csv。
该脚本的限制是,如果文件名不同,那么我必须重命名该文件或在脚本中进行更改,否则它将无法读取。我怎样才能使这个动态化,以便无论文件的名称是什么——它都应该处理并创建 FinalOutput.csv
示例脚本 -
#!/bin/bash
awk -F, '{print $2}' INPUT.csv > FileB.csv
{
Operations on File B
}
paste -d "," INPUT.csv FileB.csv > FinalOutput.csv
exit 0
答案1
运行脚本时将输入文件的文件名作为参数。
然后您可以使用以下命令运行脚本:
./script.sh INPUT.csv FileB.csv
在脚本内部,使用变量"$1"
和引用参数"$2"
,如下所示:
#!/bin/bash
awk -F, '{print $2}' "$1" > "$2"
{
# Operations on File B
}
paste -d "," "$1" "$2" > FinalOutput.csv
exit 0