我想知道下面脚本中的错误是什么
我的错误为: command not foundh: line 1:
,: command not foundh: line 2:
为连续
我试过添加;
但是现在好好告诉我该怎么做??
#!/bin/bash;
clear;
FILEREPO=http://192.168.1.2/cpplugin;
echo "-----------------------------------------------";
echo " Welcome to C-Panel Login Alert Installer";
echo "-----------------------------------------------";
cd /var/cpanel/;
mkdir perl5
cd perl5/
mkdir lib
cd lib/
wget $FILEREPO/LoginAlerthook.zip
unzip LoginAlerthook.zip
rm -r LoginAlerthook.zip
cd /
/usr/local/cpanel/bin/manage_hooks add module LoginAlert
chmod 777 LoginAlert.pm
echo " "
echo " Login Alert Script Hooked With C Panel Finished"
echo " "
答案 0 :(得分:10)
您获得有趣输出的事实肯定是您的脚本在行尾有回车(CR)字符,通常是使用Windows编辑器的症状,假设行结尾应为CR / LF而不仅仅是标准的UNIX LF(换行)。这导致错误输出,如:
this_command_ends_hh<CR>: command not found
因为CR将光标放回到行开头,所以它会覆盖其中一些:
this_command_ends_hh<CR>
: command not found
制造:
: command not foundh
使用od -xcb scriptname
检查您的脚本以检查CR(显示为\r
)个字符,您还可以通过od -xcb
管道输出脚本以查看 real 输出。例如,我使用hello
创建的文件,后跟唯一一行的回车符:
0000000 6568 6c6c 0d6f 000a
h e l l o \r \n
150 145 154 154 157 015 012
0000007
您可以在那里看到CR(\r
)。
如果 问题,只需删除CR字符,例如通过tr -d '\r'
进行管道处理。
执行cat hello.txt | tr -d '\r' | od -xcb
表明你可以摆脱它:
0000000 6568 6c6c 0a6f
h e l l o \n
150 145 154 154 157 012
0000006
在您的情况下,假设您的脚本名为freak.bash
,您将使用:
tr -d '\r' <freak.bash >newfreak.bash
和newfreak.bash
将是没有违规字符的那个。
答案 1 :(得分:1)
可用于了解执行此脚本以进行调试的工具是命令,
bash -x scriptname.sh
答案 2 :(得分:1)
paxdiablo几乎肯定是正确的:您需要修复行结尾。但是你在第一行也有一个错误的分号。而不是:
#!/bin/bash;
你想要:
#!/bin/bash
没有尾随的分号。
答案 3 :(得分:0)
我现在没有Centos 5,但也许......也许...... bash不在/ bin?在FreeBSD中,它位于/ usr / local / bin。在Cygwin中,它位于/ usr / bin。这个命令的输出是什么:
which bash
答案 4 :(得分:0)
paxdiablo和William Pursell很好地解释了问题所在。
现在,如果您要分发它,请花点时间改进您的脚本。
未经过测试示例:
#/bin/bash
ZIPFILE=http://192.168.1.2/cpplugin/LoginAlerthook.zip
CPANEL_LIBDIR=/var/cpanel/perl5/lib
MANAGE_HOOKS_CMD=/usr/local/cpanel/bin/manage_hooks
TMPFILE=`tempfile`
function exit_with_error(){
echo "$*" >&2 # Write error messages to stderr!!
exit 1
}
function at_exit(){
[ -f "${TMPFILE}" ] && rm -v ${TMPFILE}
}
# Run at_exit function when script finishes
trap at_exit 0
echo "WELCOME TO ZOMBO.COM"
# Create lib directory if not exists, exit if not possible
if ! [ -d "${CPANEL_LIBDIR}" ]; then
mkdir -p ${CPANEL_LIBDIR} || exit_with_error "Couldn't create required directory [${CPANEL_LIBDIR}]"
fi
wget ${ZIPFILE} -O ${TMPFILE} || exit_with_error "Couldn't download file"
unzip -d ${CPANEL_LIBDIR} ${TMPFILE} || exit_with_error "Couldn't unzip file"
chmod +x ${CPANEL_LIBDIR}/LoginAlert.pm || exit_with_error "Couldn't chmod file"
$MANAGE_HOOKS_CMD add module LoginAlert
echo "End."
这只是一个肮脏的例子。阅读手册以改进。
man bash
man tempfile
man wget
man unzip
man chmod