将多个参数从 bash 传递到 python
Pass multiple args from bash into python
我有一个从 bash 脚本调用的短内联 python 脚本,我想让它处理一个多词变量(来自 $*
) .我希望这能正常工作:
#!/bin/bash
arg="A B C"
python -c "print '"$arg"'"
但事实并非如此:
File "<string>", line 1
print 'A
^
SyntaxError: EOL while scanning string literal
为什么?
BASH 脚本有误。
#!/bin/bash
arg="A B C"
python -c "print '$arg'"
并输出
$ sh test.sh
A B C
请注意,要连接两个字符串变量,您不需要将它们放在字符串常量之外
我想解释一下为什么您的代码不起作用。
你想做的是:
arg="A B C"
python -c "print '""$arg""'"
输出:
A B C
您的代码的问题是 python -c "print '"$arg"'"
被 shell 解析为 python -c "print '"A B C"'"
。看到这个:
arg="A B C"
python -c "print '"A B C"'"
#__________________^^^^^____
输出:
File "<string>", line 1
print 'A
SyntaxError: EOL while scanning string literal
此处出现语法错误,因为空格会阻止连接,因此以下 B
和 C"'"
被解释为两个不同的字符串,它们不属于作为命令传递给 python 解释器(只接受 -c
后面的字符串作为命令)。
为了更好地理解:
arg="ABC"
python -c "print '"$arg"'"
输出:
ABC
我有一个从 bash 脚本调用的短内联 python 脚本,我想让它处理一个多词变量(来自 $*
) .我希望这能正常工作:
#!/bin/bash
arg="A B C"
python -c "print '"$arg"'"
但事实并非如此:
File "<string>", line 1
print 'A
^
SyntaxError: EOL while scanning string literal
为什么?
BASH 脚本有误。
#!/bin/bash
arg="A B C"
python -c "print '$arg'"
并输出
$ sh test.sh
A B C
请注意,要连接两个字符串变量,您不需要将它们放在字符串常量之外
我想解释一下为什么您的代码不起作用。
你想做的是:
arg="A B C"
python -c "print '""$arg""'"
输出:
A B C
您的代码的问题是 python -c "print '"$arg"'"
被 shell 解析为 python -c "print '"A B C"'"
。看到这个:
arg="A B C"
python -c "print '"A B C"'"
#__________________^^^^^____
输出:
File "<string>", line 1
print 'A
SyntaxError: EOL while scanning string literal
此处出现语法错误,因为空格会阻止连接,因此以下 B
和 C"'"
被解释为两个不同的字符串,它们不属于作为命令传递给 python 解释器(只接受 -c
后面的字符串作为命令)。
为了更好地理解:
arg="ABC"
python -c "print '"$arg"'"
输出:
ABC