这可能是一个简单的问题,但我是新手来编写脚本并且花了很多时间在这上面没有运气;我希望我能在这里得到答案。
我正在尝试编写一个bash脚本,该脚本从文本文件中读取单独的行,并将它们作为python脚本的参数传递。我有一个文件列表(我已将其保存到单个文本文件中,所有文件都在单独的行中),我需要在我的python脚本中用作参数,并且我想使用bash脚本将它们全部发送出去。当然,我可以采取繁琐的方式将其余的python命令复制/粘贴到脚本中的各行,但我认为有一种方法可以使用“read line”命令执行此操作。我尝试了各种各样的命令组合,但这是我最近的命令:
#!/bin/bash
# Command Output Test
cat infile.txt << EOF
while read line
do
VALUE = $line
python fits_edit_head.py $line $line NEW_PARA 5
echo VALUE+"huh"
done
EOF
当我这样做时,我返回的只是输入文件中的各行。我有额外的VALUE,看看它是否会打印出来,但事实并非如此。显然,“读取线”命令有一些简单的东西,我不明白,但在搞了很长时间之后,我不知道它是什么。我承认我仍然是这个bash脚本游戏的新手,而不是那个非常好的游戏。任何帮助肯定会受到赞赏。
答案 0 :(得分:0)
你可能意味着:
while read line; do
VALUE=$line ## No spaces allowed
python fits_edit_head.py "$line" "$line" NEW_PARA 5 ## Quote properly to isolate arguments well
echo "$VALUE+huh" ## You don't expand without $
done < infile.txt
Python也可能会读取STDIN,因此它可能会意外地从infile.txt
读取输入,因此您可以使用另一个文件描述符:
while read -u 4 line; do
...
done 4< infile.txt
更好的是,如果您使用Bash 4.0,使用readarray
会更安全,更清洁:
readarray -t lines < infile.txt
for line in "${lines[@]}; do
...
done