2

nohup在脚本中使用时遇到问题。nohup如果不使用该脚本启动该过程,则该脚本可以正常工作。运行时收到以下错误:

./iper.sh: line 16: syntax error near unexpected token `;'
./iper.sh: line 16: `        [Yy]*) nohup iperf -s > /dev/null 2>&1&; break;;'

这是完整的脚本:

#!/bin/bash
    echo "Checking to see if Iperf is running:"
sleep 2

ps cax | grep iperf > /dev/null
if [ $? -eq 0 ]; then
    echo "Iperf is running."
else
    echo "Iperf is not running." 
fi
sleep 2

while true; do
    read -p "Press Y to start Iperf or N to exit: " yn
    case $yn in
        [Yy]*) nohup iperf -s > /dev/null 2>&1&; break;;
        [Nn]*) exit;; 
    esac
done    

怎么了?

4

3 回答 3

3

如果您要终止命令&并将其置于后台,请不要用另一个分号终止它;

[Yy]*) nohup iperf -s > /dev/null 2>&1& break;;

之前

2>&1&;
于 2013-09-02T03:23:42.090 回答
0

检查以下脚本

#!/bin/bash
    echo "Checking to see if Iperf is running:"
sleep 1

if  `pgrep iperf >/dev/null 2>&1`
then
    echo "iperf Running"
else
    echo "iperf not Running"
fi

sleep 1

while true; do
        echo "Do you wanna start Iperf (y/n)"
        read  -n 1 ch; p=`echo ${ch} | tr A-Z a-z`
        case $p in
                y)nohup iperf -s > /dev/null 2>&1 break;;

                n)exit;;

                *)continue;
    esac
done

执行此操作时,它会等待用户按* ctrl + c * 出来

如果您使用 2>&1&(用于在不受用户干扰的情况下继续)允许用户做其他工作

替换 y) 条件下的行

nohup iperf -s > /dev/null 2>&1& break;;
于 2013-09-02T08:22:00.390 回答
0

我猜你有一个额外&2>&1&

将其更改为2>&1

于 2013-09-02T02:55:39.967 回答