2015-01-06 4 views
0

Мой код работает нормально, то на следующий день я получаюIllegal Number - Shell Script

./Desktop/audiolog.sh: 32: [: /proc/: unexpected operator 

./Desktop/audiolog.sh: 13: ./Desktop/audiolog.sh: Illegal number: 08 

Это, возможно, число 08 в течение секунд? Все указатели будут большое спасибо

#!/bin/sh 

DAY=$(date +%d)       
MO=$(date +%m)        
YR=$(date +%y)     
SE=$(date +%S)        
H=$(date +%H)               
M=$(date +%M) 

NOW=$(date) 

DURATION=$(((60 - M) * 60-SE)) 

PART=$(find /mnt/hgfs/Audio\ Log/ -type f -name "RBLoggerAudio ${DAY}-${MO}-${YR}\ ${H}*" | wc -l) 

reset 

echo "Recording for $DAY $MO $YR - $H 00" 
echo "Started at $NOW" 
echo "- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -" 

if [ "$PART" -eq 0 ] 
then 
    arecord -f cd -c 1 -d$DURATION -t raw -v -v | lame -b 64 -q8 -mm -r - /mnt/hgfs/Audio\ Log/"RBLoggerAudio "$DAY-$MO-$YR\ $H"00".mp3  
else 
    arecord -f cd -c 1 -d$DURATION -t raw -v -v | lame -b 64 -q8 -mm -r - /mnt/hgfs/Audio\ Log/"RBLoggerAudio "$DAY-$MO-$YR\ $H"00 - Part - "$PART.mp3 
fi 


pid=$(ps -opid= -C audiolog.sh) 
while [ -d /proc/$pid ] ; do 
    sleep 1 
done && ./Desktop/audiolog.sh 

ответ

0

Изменить этот

while [ -d /proc/$pid ] ; do 

с

while [ -d "/proc/$pid" ] ; do 
+0

на самом деле? одинарные кавычки? – Jdamian

+0

Спасибо и @Jdamian и fedorqui, чтобы упомянуть об этом. Я отредактировал соответственно. – Skynet

+0

В передней части '$ pid' есть пробел (именно по этой причине это не удается). Этот тест проверяет, существует ли каталог '/ proc/1234' (с пробелом) и всегда будет возвращать значение false. – Wintermute