我有一个相当复杂的命令,需要从批处理脚本运行。问题在于命令本身需要在其中包含转义的单引号。也就是说,如果我从命令行运行它,它将有一个看起来像这样的标志:
--postExec 'all:CfgMgr.MessageSvc().setError+=[\"HepMcParticleLink\"]' 'ESDtoAOD:fixedAttrib=[s if \"CONTAINER_SPLITLEVEL = \\'99\\'\" not in s else......
但是,当我尝试将此命令放入脚本并运行时,它与\\\'
序列混乱。如何获得脚本以准确评估该序列?
编辑:为澄清起见,我有此命令需要完全按照书面要求运行:
Reco_tf.py --digiSteeringConf 'StandardSignalOnlyTruth' --conditionsTag 'default:OFLCOND-MC15c-SDR-09' --ignorePatterns 'Py:TrigConf2COOLLib.py.+ERROR.===================================+' --autoConfiguration 'everything' --postInclude 'default:RecJobTransforms/UseFrontier.py' 'ESDtoDPD:VrtSecInclusive/VrtSecInclusive_DV_postInclude.py' --steering 'doRDO_TRIG' --preInclude 'HITtoRDO:Digitization/ForceUseOfPileUpTools.py,SimulationJobOptions/preInclude.PileUpBunchTrainsMC15_2015_25ns_Config1.py,RunDependentSimData/configLumi_run284500_v2.py' 'RDOtoRDOTrigger:RecExPers/RecoOutputMetadataList_jobOptions.py' --postExec 'all:CfgMgr.MessageSvc().setError+=["HepMcParticleLink"]' 'ESDtoAOD:fixedAttrib=[s if "CONTAINER_SPLITLEVEL = \\'99\\'" not in s else "" for s in svcMgr.AthenaPoolCnvSvc.PoolAttributes];svcMgr.AthenaPoolCnvSvc.PoolAttributes=fixedAttrib' 'RAWtoESD:ToolSvc.EGammaAmbiguityTool.useLargeD0Author = True;ToolSvc.MuonCombinedInDetDetailedTrackSelectorTool.IPd0Max = 9999.;ToolSvc.MuonCombinedInDetDetailedTrackSelectorTool.nHitPix = 0;ToolSvc.MuonCombinedInDetDetailedTrackSelectorTool.nHitSct = 2;ToolSvc.MuonCombinedInDetDetailedTrackSelectorTool.nHitSi = 2;ToolSvc.CaloTrkMuIdAlgTrackSelectorTool.IPd0Max = 9999.;ToolSvc.CaloTrkMuIdAlgTrackSelectorTool.nHitPix = 0;ToolSvc.CaloTrkMuIdAlgTrackSelectorTool.nHitSct = 2;ToolSvc.CaloTrkMuIdAlgTrackSelectorTool.nHitSi = 2' --preExec 'all:rec.Commissioning.set_Value_and_Lock(True);from AthenaCommon.BeamFlags import jobproperties;jobproperties.Beam.numberOfCollisions.set_Value_and_Lock(20.0);from LArROD.LArRODFlags import larRODFlags;larRODFlags.NumberOfCollisions.set_Value_and_Lock(20);larRODFlags.nSamples.set_Value_and_Lock(4);larRODFlags.doOFCPileupOptimization.set_Value_and_Lock(True);larRODFlags.firstSample.set_Value_and_Lock(0);larRODFlags.useHighestGainAutoCorr.set_Value_and_Lock(True)' 'RAWtoESD:from CaloRec.CaloCellFlags import jobproperties;jobproperties.CaloCellFlags.doLArCellEmMisCalib=False;from InDetRecExample.InDetJobProperties import InDetFlags;InDetFlags.doLargeD0.set_Value_and_Lock(True);InDetFlags.keepAdditionalHitsOnTrackParticle.set_Value_and_Lock(True)' 'ESDtoDPD:from MuonRecExample.MuonRecFlags import muonRecFlags;muonRecFlags.prdToxAOD=True;' --triggerConfig 'RDOtoRDOTrigger=MCRECO:DBF:TRIGGERDBMC:2046,20,56' --geometryVersion 'default:ATLAS-R2-2015-03-01-00' --pileupFinalBunch '6' --numberOfHighPtMinBias '0.12268057' --numberOfLowPtMinBias '39.8773194' --numberOfCavernBkg '0' --inputLowPtMinbiasHitsFile %LOMBIN --inputHighPtMinbiasHitsFile %HIMBIN --inputHITSFile %IN --outputDAOD_RPVLLFile %OUT.DAOD_RPVLL.root
您会注意到其中有\\'99\\'
。如果我将其复制并粘贴到命令行中,则一切正常。但是,当我将其放入脚本(这是我需要在批处理系统上运行)时,顺序会更改。有没有办法将此命令放入脚本中,并使其完全像在命令行中那样进行评估?