如何将文本文件的三列内容作为Bash脚本的三个参数传入?
简单实现逐行传递三列参数到Bash脚本
作为Shell脚本初学者,这个需求其实用逐行读取+循环调用的方式就能轻松实现,完全不用复杂工具,直观又好懂。
核心方案
假设你的脚本名为my_script.sh(记得先给它加执行权限:chmod +x my_script.sh),food.txt里每行是用空格分隔的三列内容,直接用下面的命令就能完成需求:
while read -r col1 col2 col3; do ./my_script.sh "$col1" "$col2" "$col3" done < food.txt
分步解释
while read -r col1 col2 col3:逐行读取food.txt的内容,自动把每行的三个字段(默认按空格/制表符分隔)分别赋值给变量col1、col2、col3;-r参数是为了避免读取到反斜杠时出现意外转义,推荐加上。./my_script.sh "$col1" "$col2" "$col3":每次循环都调用你的脚本,把三个变量作为参数传进去,变量加双引号是为了兼容字段里有空格的情况(比如某列是"red apple")。done < food.txt:把food.txt作为整个循环的输入源,替代从键盘读取内容。
实际例子演示
比如你的food.txt内容是:
apple red sweet banana yellow sweet orange orange sour
你的my_script.sh内容是:
#!/bin/bash echo "食物:$1,颜色:$2,口味:$3"
运行上面的循环命令后,会输出:
食物:apple,颜色:red,口味:sweet 食物:banana,颜色:yellow,口味:sweet 食物:orange,颜色:orange,口味:sour
特殊分隔符处理(可选)
如果你的文本文件不是用空格分隔,而是用逗号、制表符之类的,只需要在read前指定分隔符IFS即可。比如用逗号分隔的话:
while IFS=, read -r col1 col2 col3; do ./my_script.sh "$col1" "$col2" "$col3" done < food.txt
这个方案完全满足你“简便、易理解”的需求,对于简单场景来说效率也完全够用~
内容的提问来源于stack exchange,提问作者Lady_Bug
相关产品推荐
相关产品推荐

