在脚本中使用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
发生什么事?
如果你打算用&
来终止你的命令,那么不要用另一个分号结尾;
以及:
[Yy]*) nohup iperf -s > /dev/null 2>&1& break;;
先前
2>&1&;
我想你有一个额外的2>&1&
将其更改为2>&1
检查下面的脚本
#!/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 AZ az` 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;;