如何运行一个python脚本,当我读到有空格的说法?
更新 :
看起来像我的问题是,我打电话通过shell脚本的Python脚本:
这工作:
> python script.py firstParam file\ with\ spaces.txt
# or
> python script.py firstParam "file with spaces.txt"
# script.py
import sys
print sys.argv
但是,不是当我通过一个脚本运行:
myscript.sh:
#!/bin/sh
python $@
打印:[ 'firstParam', '文件', '与', 'spaces.txt']
但我要的是:“firstParam”,“与spaces.txt文件”]
用"$@"
来代替:
#!/bin/sh
python "$@"
输出:
$ /tmp/test.sh /tmp/test.py firstParam "file with spaces.txt"
['/tmp/test.py', 'firstParam', 'file with spaces.txt']
与/tmp/test.py
定义为:
import sys
print sys.argv
如果你想从一个shell脚本到另一个程序传递参数,你应该使用"$@"
,而不是$@
。 这将确保每个参数可扩展为一个字,即使它包含空格。 $@
相当于$1 $2 ...
,而"$@"
等价于"$1" "$2" ...
。
例如,如果运行: ./myscript param1 "param with spaces"
:
-
$@
将扩大到param1 param with spaces
-四个参数。 -
"$@"
将扩大到"param1" "param with spaces"
-两个参数。