0

我正在制作一个 bash 脚本。目标是:执行程序等待几秒钟重置程序并重复该过程。我做了2个脚本,但我不知道错误在哪里......

 #!/bin/bash
while true; 
do 
seg=`date +%M`;
if [[ "$seg" -eq "30" ]]; 
then killall sox;
echo "reset"; 
fi
done

bash:错误 sintáctico cerca del elemento inesperado `;'

#!/bin/bash
while true;
do
nice -n-10 sox -q -V0 --multi-threaded -t alsa hw:2,0 -t alsa pcm.default && 
done

bash:错误 sintáctico cerca del elemento inesperado `done'

4

1 回答 1

1

脚本 #1 的问题:

表示法;是在同一行上一个接一个地运行多个命令。Bash 语法要求whileanddo在单独的行上(与if ...and相同then,并由;if 在同一行上分隔。命令语句通常不会;以 bash 中的字符结尾。

更改您的代码:

#!/bin/bash
while true; 
do 
seg=`date +%M`;
if [[ "$seg" -eq "30" ]]; 
then killall sox;
echo "reset"; 
fi
done

到:

#!/bin/bash
while true
do 
    seg=`date +%M`
    if [[ "$seg" -eq "30" ]]; then
        killall sox
        echo "reset"
    fi
done

脚本 #2 的问题:

&表示将命令作为后台进程运行。&&用于条件命令链,如:“如果前面的命令&&成功,则运行后面的命令&&

更改自:

#!/bin/bash
while true;
do
nice -n-10 sox -q -V0 --multi-threaded -t alsa hw:2,0 -t alsa pcm.default && 
done

到:

#!/bin/bash
while true
do
    nice -n-10 sox -q -V0 --multi-threaded -t alsa hw:2,0 -t alsa pcm.default &
done
于 2012-11-23T00:32:08.407 回答