我正在制作一个bash脚本。 目标是:执行程序 等待几秒钟重置程序并重复该过程。我制作了 2 个脚本,但我不知道错误在哪里......
#!/bin/bash
while true;
do
seg=`date +%M`;
if [[ "$seg" -eq "30" ]];
then killall sox;
echo "reset";
fi
done
bash: error 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: error sintáctico cerca del elemento inesperado 'done'
脚本 #1 的问题:
;
表示法是在同一行上一个接一个地运行多个命令。Bash 语法要求 while
和 do
在不同的行上(与 if ...
和 then
相同,如果在同一行上,则用 ;
分隔。命令语句通常不会以 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