【问题标题】:How can I make a shell script using Perl?如何使用 Perl 制作 shell 脚本?
【发布时间】:2010-10-28 11:39:55
【问题描述】:

我有一个名为 replaceUp 的 Perl 脚本:

 #!/usr/bin/perl                                          

 search=$1
 replace=$2

 find . -type f -exec perl -p -i -e "s/$search/$replace/g" {} \;

脚本未加载。这表明我的脚本是错误的。

如何使用 Perl 制作 shell 脚本?

【问题讨论】:

    标签: perl shell find replace


    【解决方案1】:

    第一行应该是#!/bin/sh,而不是#!/usr/local/bin/perl。你误认为这是一个 Perl 脚本;它是一个调用 Perl 的 shell 脚本。

    它也不会真正起作用,因为 $search 和 $replace 不会被插在单引号内。试试单引号双引号。

    或者更好的是,试试my mass search/replace Perl script。我为此保留了一个纯 Perl 脚本,因为像大规模搜索/替换一样危险,您不需要多层次的 shell 元字符解释,将其从危险变为绝对致命。

    【讨论】:

    • 感谢您的回答! -- arg -- 我的脚本作为一个 shell 脚本很糟糕。当我用双引号启动我的 shell 时,脚本开始替换和删除我的根目录中的所有内容。 -- 我不明白出了什么问题。
    • @Masi:你是用谁登录的?用户'root'?如果是这样,傻,傻,傻。永远不要以 root 身份探索脚本——Perl、shell 或任何其他类型;一个错误可能是(将是)灾难性的。只有当你绝对必须使用'root',并且只有当你确信你将要做的事情不会引起任何问题时,你才使用'root'。在根目录中运行的“查找”命令可能会损坏各种文件 - 例如 /bin/sh 等。处于不愉快的境地。永远不要以root身份运行任何东西,直到你确定它不会弊大于利! (并且不要以 root 身份登录。)
    • @Masi:好吧,我猜你可以用 grep 替换你的替换字符串。这真的很不幸。显然你现在知道了,但是当你谈论像大规模搜索和替换这样危险的事情时,你应该总是在一个临时目录中进行测试,然后再尝试在整个系统上使用它。
    • @chaos:没有 cmets 很难阅读你的 Perl 脚本。在任何地方都有与 cmets 相同的脚本吗?
    • 那个 Perl 脚本不需要任何 cmets,它已经非常可读了。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-06-05
    • 1970-01-01
    • 2012-03-08
    • 1970-01-01
    • 1970-01-01
    • 2012-03-16
    相关资源
    最近更新 更多