Please, when posting scripts, use the [ code ]....[ /code ]-tags. They make it a lot easier to read.
The problem might be that your script is named "test" or in that "if [ ..." line.
Today all the "[...]"-mechanics are built into the shells, but back, in the good old days, there was a program called "test" and a link to this program called "[" (which is a legal program name, btw.). But the real program is called "test" and therefore it is unwise to call a script "test", like it would be unwise to call one "cat" or "grep".
When you write a line "if [ x = y ] ; then" you basically call this program "test" (respectively its link "[") and feed it "x = y ]" as parameters. "test" returns either "0" or "1" depending on what the outcome of the comparison is. Syntactically correct would also be:
if 0 ; then
.....
else
.....
fi
The error message now says that you fed "test" too many arguments. This might be the case because one of your variables contain not what they supposed to contain. Another point to consider in your code is that you nowhere make sure the variables are of the right type: "-eq" is only valid for comparing two integer values. If your variables do not contain integers (a space somewhere, leading or trailing would suffice) the comparison would also fail.
Finally yo do not need variables because you can compare directly. Here is a somewhat revised version of your code:
typeset -i MOUSE=0
typeset -i KEY=0
while : ; do
MOUSE=$(awk '/12:/ {print $2}' /proc/interrupts)
KEY=$(awk '/1:/ {print $2}' /proc/interrupts)
sleep $TIME
if [ \( $MOUSE -eq $(awk '/12:/{print $2}' /proc/interrupts) \) -a \
$KEY -eq $(awk '/1:/{print $2}' /proc/interrupts) \) \
] ; then
# date >> /writable/sys/shutdown.log
shutdown -h "now"
exit
fi
done
I don't know your OS (guessing from the usage of the /proc-filesystem it is some Linux) and don't know exactly what is the form of /proc/interrupts is, but i would start looking at what awk does really extract from it:
Thank you! The script is working perfectly now....! The problem was
KEY1=`cat /proc/interrupts | grep 1: | awk '{print $2}'`
returned two values instead of one