【发布时间】:2019-03-04 08:47:14
【问题描述】:
我对 bash 脚本非常陌生。 我有一个 .txt 文件,其中的字符串名称由行分隔(每个字符串之间有空格)。
my.txt 是:
my name
my class
my room
当我使用终端运行我的 python 脚本时。我需要一个一个地传递参数。
python3 python_file.py -f 'my name'
python3 python_file.py -f 'my class'
python3 python_file.py -f 'my room'
它工作正常。我想为每个字符串(我的名字、我的班级和我的房间)单独使用 bash 脚本,并作为 python 脚本的参数传递。
#!/bin/bash
while read LINE; do
#echo ${LINE}
python3 pythonfile.py -f $LINE
done < my.txt
它不起作用,因为每个字符串之间都有一个空格(我的名字),python假定为字符串并显示错误消息
error: unrecognized arguments: name
当我试图在 bash 脚本中加上引号时,它不起作用。
#!/bin/bash
while read LINE; do
echo \'${LINE}\'
#python3 pythonfile.py -f $LINE
done < my.txt
output:
'my name
'my class
'my room
同样的错误信息。
当我尝试在 .txt 文件中添加引号时,它甚至不起作用。
新:my.txt
'my name'
'my class'
'my room'
同样的错误信息:
error: unrecognized arguments: name
我不想通过从 my.txt 文件中一一读取名称来使用一个 python 脚本来执行此操作。我在 python 脚本中有一些不适合这个的内部编码。因此我想使用bash。
请指导。
【问题讨论】:
-
应该是
python3 pythonfile.py -f "$LINE" -
你试过
python3 pythonfile.py -f '$LINE'吗?这应该有效。 -
@R.Joiny:这行不通,因为
bash中的变量不会在单引号下展开。你需要双引号 -
@Inian 非常感谢。它起作用了:D