在Bash脚本中执行Python脚本时如何处理Bash通配符?
我有一个bash脚本,它定义了一个包含*通配符的文件模式数组。
这个脚本会执行一个python脚本,并把这些文件模式作为参数传递给它。
在命令行中,我可以把整个文件模式用引号括起来,python对此很满意。
但是在bash脚本中,如果我把文件模式用引号括起来,python的os.path.realpath似乎会对这些引号感到困惑,因为引号会被传递到脚本里。
比如,bash脚本:
BACKUP_PATHS=("/root/backups/db-dump-*" "/root/backups/*_backup.tar.bz2")
for path in "${BACKUP_PATHS[@]}"
do
/usr/local/bin/python2.7 /usr/local/bin/clean.py \'$path\' $MAX_FILES
done
python:
os.path.realpath(path) # results in something like: /usr/local/bin'/root/backups/db-dump-*'
我该怎么让它们一起正常工作呢?
谢谢
1 个回答
2
不要用 \'$path\'
,而是用 "$path"
。双引号可以让变量 $path
的内容被替换进来,但又能防止通配符扩展,确保这个路径作为一个整体被传递。