You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将文本文件的三列内容作为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

分步解释

  1. while read -r col1 col2 col3:逐行读取food.txt的内容,自动把每行的三个字段(默认按空格/制表符分隔)分别赋值给变量col1、col2、col3;-r参数是为了避免读取到反斜杠时出现意外转义,推荐加上。
  2. ./my_script.sh "$col1" "$col2" "$col3":每次循环都调用你的脚本,把三个变量作为参数传进去,变量加双引号是为了兼容字段里有空格的情况(比如某列是"red apple")。
  3. 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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.20 09:15:26