簡體   English   中英

Shell腳本的空格分隔參數

[英]space delimited arguments to shell script

我的要求是從plsql過程調用shell腳本,並將參數從plsql傳遞給shell腳本。 我現在面臨的問題是,如果參數之間包含任何空格,則Shell腳本會將其視為單獨的參數值。

從pl sql到shell腳本的輸入如下

abc@xyz.com##ace321##https://companyurl.com XRX_Test,AL 
LDG,Test,Test,false,2,5 XRX_Test,AL LDG,Test1,Test1,false,2,5

這里Arg1"abc@xyz.com##ace321##https:companyurl.com"Arg2"XXX_Test,AL LDG,Test1,Test1,false,2,5"Arg3"XXX_Test2,AL LDG,Test1,Test1,false,2,5"

在shell腳本中,我嘗試如下

echo "Process argument begins"  
    echo "The total arg:" "$#"  
    echo " Received arguments:" "$@"
    for l_temp in "$@"
        do
            echo "arguments:" + ' "' "$l_temp" '"'
            # EXTRACT_NAME+=' "' "$l_temp" '"'
            EXTRACT_NAME+=' "'
            EXTRACT_NAME+="$l_temp"
            EXTRACT_NAME+='"'
        done
    echo "Complete List" "$EXTRACT_NAME"
    echo "Process argument ends"

和上面的shell腳本的輸出如下(盡管我只傳遞了3個參數,由於空間原因,我得到了5個參數)

Process argument begins
The total arg: 5
 Received arguments: abc@xyz.com##ace321##https://companyurl.com XRX_Test,AL LDG,Test,Test,false,2,5 XRX_Test1,AL LDG,Test1,Test1,false,2,5
arguments: +  " abc@xyz.com##ace321##https://companyurl.com "
arguments: +  " XRX_Test,AL "
arguments: +  " LDG,Test,Test,false,2,5 "
arguments: +  " XRX_Test1,AL "
arguments: +  " LDG,Test1,Test1,false,2,5 "
Complete List  "abc@xyz.com##ace321##https://companyurl.com" "XRX_Test,AL" "LDG,Test,Test,false,2,5" "XRX_Test1,AL" "LDG,Test1,Test1,false,2,5"
Process argument ends

但是實際需要的輸出如下

Process argument begins
The total arg: 3
 Received arguments: abc@kbace.com##ace321##https:companyurl.com XXX_Test,AL LDG,Test1,Test1,false,2,5 XXX_Test2,AL LDG,Test1,Test1,false,2,5
arguments: +  " abc@xyz.com##ace321##https:companyurl.com "
arguments: +  " XXX_Test,AL LDG,Test1,Test1,false,2,5 "
arguments: +  " XXX_Test2,AL LDG,Test1,Test1,false,2,5 "
Complete List  "abc@xyz.com##ace321##https:companyurl.com" "XXX_Test,AL LDG,Test1,Test1,false,2,5" "XXX_Test2,AL LDG,Test1,Test1,false,2,5"
Process argument ends

有人可以幫我嗎? 我需要在shell腳本中進行哪些更改以避免空格或任何特殊字符? 謝謝

將參數傳遞給腳本時,只需將其放在引號之間:

bash script.sh "abc@xyz.com##ace321##https:companyurl.com" "XXX_Test,AL LDG,Test1,Test1,false,2,5" "XXX_Test2,AL LDG,Test1,Test1,false,2,5"

暫無
暫無

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

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