加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

使用bash脚本中的空格处理Perl命令行参数?

发布时间:2020-12-15 21:56:39 所属栏目:安全 来源:网络整理
导读:这让我疯了好几个小时了. 考虑perl中的以下测试脚本: (hello.pl) #!/usr/bin/perlprint "----------------------------------n";$numArgs = $#ARGV + 1;print "thanks,you gave me $numArgs command-line arguments:n";foreach $argnum (0 .. $#ARGV) { p
这让我疯了好几个小时了.

考虑perl中的以下测试脚本:
(hello.pl)

#!/usr/bin/perl
print "----------------------------------n";
$numArgs = $#ARGV + 1;
print "thanks,you gave me $numArgs command-line arguments:n";

foreach $argnum (0 .. $#ARGV) {
    print "$ARGV[$argnum]n";
}

好吧,它只是打印出给脚本的命令行参数.

例如:

$./hello.pl apple pie
----------------------------------
thanks,you gave me 2 command-line arguments:
apple
pie

我可以通过用双引号括起来给脚本一个带空格的参数:

$./hello.pl "apple pie"
----------------------------------
thanks,you gave me 1 command-line arguments:
apple pie

现在我想在shell脚本中使用这个脚本.我已经设置了这样的shell脚本:

#!/bin/bash

PARAM="apple pie"
COMMAND="./hello.pl "$PARAM""

echo "(command is $COMMAND)"
$COMMAND

我用相同的参数调用hello.pl并转义引号.
该脚本返回:

$./test.sh 
(command is ./hello.pl "apple pie")
----------------------------------
thanks,you gave me 2 command-line arguments:
"apple
pie"

尽管$COMMAND变量回应命令的方式与第二次从命令行运行perl脚本的方式完全一样,但这次它不希望将苹果派视为单个参数.

为什么不?

解决方法

这看起来像Bash FAQ中描述的问题: I’m trying to put a command in a variable,but the complex cases always fail!

该常见问题解答的答案提出了许多可能的解决方案 – 我希望这是有用的.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读