首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >以空格分隔的shell脚本参数

以空格分隔的shell脚本参数
EN

Stack Overflow用户
提问于 2015-05-07 09:44:43
回答 1查看 351关注 0票数 0

我的要求是从plsql过程调用shell脚本,并将参数从plsql传递到shell脚本。我现在面临的问题是,如果参数在中间包含任何空格,则shell脚本将其视为单独的参数值。

从pl sql到shell脚本的输入如下

代码语言:javascript
复制
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脚本中,我尝试如下所示

代码语言:javascript
复制
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个参数)

代码语言:javascript
复制
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

但实际所需的交货期如下

代码语言:javascript
复制
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脚本中做什么更改?谢谢

EN

回答 1

Stack Overflow用户

发布于 2015-05-07 10:33:39

当将参数传递给脚本时,只需将它们放在引号之间:

代码语言:javascript
复制
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"
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30097391

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档