私はvlc
プレイリストを起動して定期的に更新するためのいくつかのスクリプトを書いています。プロンプトで実行するとupdate_pls.sh
正常に動作しますが、プロンプトで呼び出すと、サイクルごとstart_vlc.sh
にfor
次の結果が表示されます。
./update_pls.sh: 20: ./update_pls.sh: 10#18: not found
./update_pls.sh: 20: ./update_pls.sh: 10#18==DIA: not found
start_vlc.sh:
#!/bin/bash
echo `date`
echo "A arrancar o VLC..."
cvlc --loop --fullscreen --extraintfttp --http-password kepler
sh update_pls.sh
update_pls.sh:
#!/bin/bash
/usr/bin/env > /Videos/cron_env.log
DIR=/Videos
FILES=$DIR/*
DIA=`(date +%d)`
HORA=`(date +%H)`
echo `date`
echo "Dir: $DIR"
echo "A fazer update da playlist.m3u..."
> $DIR/playlist.m3u
for f in $FILES
do
a=`(basename $f .mov | cut -b 1-2 | sed 's/[^0-9]//g')`
b=`(basename $f .mov | cut -b 3-4 | sed 's/[^0-9]//g')`
if [ -n "$a" ]; then
:
else
a="99"
fi
if (( 10#$a<DIA)) || ((10#$a==DIA && 10#$b<=HORA )); then
echo -e "$f\n" >> $DIR/playlist.m3u
echo "Adicionado o video $f"
fi
done
echo "A fazer upload da playlist para o VLC..."
curl -u '':kepler "http://localhost:8080/requests/status.xml?command=pl_empty"
curl -u '':kepler "http://localhost:8080/requests/status.xml?command=in_enqueue&input$
curl -u '':kepler "http://localhost:8080/requests/status.xml?command=pl_play"
この問題の原因が見つかりませんでした。助けていただきありがとうございます。バスコ
答え1
update_pls.sh
スクリプトがありますが、useから呼び出すbash
とシステムで実行されない可能性があります。行を or do on に変更し、コマンドで直接呼び出してみてください。start_vlc.sh
sh
bash
bash update_pls.sh
chmod a+x
update_pls.sh
スクリプトに関するいくつかの注意:
実際に役に立たecho `date`
ない場合はecho
、単に使用してくださいdate
。
次の行に括弧を使用する必要はありませんDIA=`(date +%d)`
。これらの行を含めると、シェルの他のインスタンスが起動され、スクリプトに多くのオーバーヘッドが追加されます。DIA=$(date)
おそらく最も好ましい形式です(ここではドル括弧がバックティックを置き換えます)。* shシェルではバックティック(「cmd」など)は使用されなくなりましたか?。
:
if/elseではaを使用する必要はありません。これだけでif ! [ -n "$a" ]; then
else部分を削除できます。
それ以外にもいくつかありますが、私の考えにはこの程度で十分だと思います。