首页 > 解决方案 > 在 csh 脚本中使用 $* 时如何防止删除引号

问题描述

我有一个 csh 脚本,它是将 python 脚本发送到网格引擎的包装器。只要我不使用包含引号的参数,就可以找到。

csh 'my.csh 脚本如下所示:

#!/bin/csh -f
<grid command> my_script.py $*

my_script.py 看起来像:

#!<path>/python3.6
from argparse import ArgumentParser

def setup_arg_parser():
    parser = ArgumentParser()
    parser.add_argument('-argument',help='Just an example.')
    args = parser.parse_args()
    return args

if __name__ == '__main__':
    args = setup_arg_parser()
    print (args)

当按如下方式调用 my.csh 时,它工作正常

%> my.csh -argument \"-anything -is -fine\"

但是当我这样做时,引号将被删除,python 参数解析器会报告错误。

%> my.csh -argument "-this -does_not -work"

有没有办法在不转义引号的情况下防止这种情况?我需要的是一种为下一个脚本提供引号的方法,这里是一个 python 脚本。

标签: pythoncsh

解决方案


推荐阅读