簡體   English   中英

將“&”字符作為值傳遞時獲取參數值的問題

[英]Problem to get argument value when passing "&" character as value

我正在使用 WLST 來執行一些腳本以在 Weblogic 中部署一些應用程序。

我在 Python 中使用 getopt 庫來解析命令行參數。

我創建了一個腳本來通過 FTP 下載一些文件。

為此,用戶必須通知“ ftpurl ”、“ ftpusername ”和“ ftppassword ”選項和相應的值。


import getopt
# -*- coding: utf-8 -*-

#=======================================================
# MAIN
#=======================================================
args = sys.argv
print 'Informed arguments: '
print args
for index in range(len(args)):
    if (":\\" in args[index]) :
        print
        print 'Removing arguments with file path'
        print args[index]
        del args[index]
        break
optlist, argsNotExpected = getopt.getopt(args, '', ['ftpurl=', 'ftpusername=', 'ftppassword='])
print
print 'Found options: '
print optlist
print
print 'Not expected arguments: '
print argsNotExpected

具有許多特殊字符的參數值 "test123!@#$%*()_-" 有效。

java weblogic.WLST C:\\Ambiente\\scripts\\python\\getoptTest.py --ftpurl=ftp.test.com --ftppassword=test123!@#$%*()_- --ftpusername=usertest

結果:

Informed arguments:
['C:\\\\Ambiente\\\\scripts\\\\python\\\\getoptTest.py', '--ftpurl=ftp.test.com', '--ftppassword=test123!@#$%*()_-', '--ftpusername=usertest']

Removing arguments with file path
C:\\Ambiente\\scripts\\python\\getoptTest.py

Found options:
[('--ftpurl', 'ftp.test.com'), ('--ftppassword', 'test123!@#$%*()_-'), ('--ftpusername', 'usertest')]

Not expected arguments:
[]

但是當我通過帶有“ & ”字符的“test&123!@#$%*()_-”時,值是break,其余的參數從“ & ”開始被忽略。

java weblogic.WLST C:\\Ambiente\\scripts\\python\\getoptTest.py --ftpurl=ftp.test.com --ftppassword=test&123!@#$%*()_- --ftpusername=usertest

結果:

Informed arguments:
['C:\\\\Ambiente\\\\scripts\\\\python\\\\getoptTest.py', '--ftpurl=ftp.test.com', '--ftppassword=test']

Removing arguments with file path
C:\\Ambiente\\scripts\\python\\getoptTest.py

Found options:
[('--ftpurl', 'ftp.test.com'), ('--ftppassword', 'test')]

Not expected arguments:
[]
'123!@#$%*' não é reconhecido como um comando interno
ou externo, um programa operável ou um arquivo em lotes.

誰能給個提示?

這是 shell 的一個問題,因為&被解釋為一個特殊字符。 bash ,它將命令發送到后台,而在cmd.exe它用於鏈接多個命令

這意味着您無法在腳本中修復它,但您可以引用您的參數:

getoptTest.py --ftpurl=ftp.test.com --ftppassword="test&123!@#$%*()_-" --ftpusername=usertest

或者,您可以使用^&來轉義符號 ( https://stackoverflow.com/a/27960888/12833309 )

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM