別のスクリプト内でスクリプトを呼び出すときにエラーが発生しました。

別のスクリプト内でスクリプトを呼び出すときにエラーが発生しました。

私はvlcプレイリストを起動して定期的に更新するためのいくつかのスクリプトを書いています。プロンプトで実行するとupdate_pls.sh正常に動作しますが、プロンプトで呼び出すと、サイクルごとstart_vlc.shfor次の結果が表示されます。

./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.shshbashbash update_pls.shchmod a+xupdate_pls.sh

スクリプトに関するいくつかの注意:

実際に役に立たecho `date`ない場合はecho、単に使用してくださいdate

次の行に括弧を使用する必要はありませんDIA=`(date +%d)`。これらの行を含めると、シェルの他のインスタンスが起動され、スクリプトに多くのオーバーヘッドが追加されます。DIA=$(date)おそらく最も好ましい形式です(ここではドル括弧がバックティックを置き換えます)。* shシェルではバックティック(「cmd」など)は使用されなくなりましたか?

:if/elseではaを使用する必要はありません。これだけでif ! [ -n "$a" ]; thenelse部分を削除できます。

それ以外にもいくつかありますが、私の考えにはこの程度で十分だと思います。

関連情報