【问题标题】:Running a Perl script on ubuntu 14.04在 ubuntu 14.04 上运行 Perl 脚本
【发布时间】:2016-06-27 10:03:08
【问题描述】:

我正在运行以下 perl 脚本

#!/usr/bin/perl

use strict;

if ( @ARGV != 2 ){
print "usage: /usr/local/bin/htpasswd.pl <username> <password>\n";
}
else {
print $ARGV[0].":".crypt($ARGV[1],$ARGV[1])."\n";
}

但出现错误

-bash: 意外标记 ` 附近的语法错误

我不明白为什么。 那么有人能告诉我为什么会出现这个错误吗? 伙计们对不起我忘了告诉 我正在使用此脚本使用以下命令创建 htpasswd 文件

/usr/local/bin/htpasswd.pl <user> <password> >> /etc/nagios/htpasswd.users

【问题讨论】:

  • "我正在运行以下 perl 脚本" — 怎么样?
  • 如果 bash 抱怨 &lt; 是意外令牌,它是如何参与其中的?您的问题中没有任何 bash 的迹象(除非 /usr/bin/perl 是一个奇怪命名的 bash 二进制文件而不是 perl 的路径)
  • 如果一切都失败了,请尝试将您的脚本复制并粘贴到一个新文件中...您可能在某处隐藏了损坏的字符...
  • 这就是不明白为什么它显示 bash
  • 各位对不起,我忘了告诉我正在使用这个脚本创建一个 htpasswd 文件,使用下面的命令 /usr/local/bin/htpasswd.pl >> /etc/nagios/ htpasswd.users

标签: perl


【解决方案1】:

我忘了告诉我正在使用这个脚本创建一个 htpasswd 文件,使用下面的命令/usr/local/bin/htpasswd.pl &lt;user&gt; &lt;password&gt; &gt;&gt; /etc/nagios/htpasswd.users

您必须将&lt;user&gt;&lt;password&gt; 替换为您要作为参数传递的用户名和密码。

例如

/usr/local/bin/htpasswd.pl bob 'TjV7!cdbta1AGs' >> /etc/nagios/htpasswd.users

&lt;&gt; 在命令行上有特殊含义,但在指令中它们只是表示占位符。

您收到的错误消息是因为您有第二个 &lt; 在它期望文件名使用 STDIN 的位置。

【讨论】:

  • 即使替换用户名和密码也会出现同样的错误
  • @ChetanPatil — 只有在不替换 &lt;username&gt;&lt;password&gt; 时才会出现错误。您是否更换了整个占位符或是否将尖括号留在原位?您必须替换整个占位符。
  • 知道了,谢谢昆汀,我使用 您的解决方案有效
【解决方案2】:

问题出在&lt;user&gt;&lt;password&gt;。使用正确的输入

例子

/usr/local/bin/htpasswd.pl test 'pass' >> /etc/nagios/htpasswd.users

【讨论】:

  • &gt;&gt; 很好,更改它会导致它覆盖文件而不是附加到它。错误消息是关于&lt; 而不是&gt;
  • 我看不出权限问题会如何导致意外的令牌错误。
猜你喜欢
  • 2015-02-19
  • 2015-07-10
  • 2016-07-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-10-16
  • 2018-03-31
  • 2016-12-05
相关资源
最近更新 更多