私は人生を楽にするために小さなBashスクリプトを作った。しかし私は解決できない問題に遭遇しました。出力が早すぎる
私は
たい私は、ファイル内のphp-エラーのためにファイルが変更/保存されることを毎回チェックする小さなスクリプトを作りました。これは私が毎回コマンドを実行する必要なしに行われます。だから、私は第2の画面でBashスクリプトを一度実行し、PHPのファイルを画面1に保存するたびに実行します。最終的なエラーは画面2に自動的に表示されます。
基本アルゴリズム
- はそれにそれを比較ファイルのハッシュは、それが異なる場合は、ファイルを保存/変更された前回のハッシュ
- のget:使用してエラーがあるかどうかをチェック
php -l
コマンド - 結果を
php -l
から
問題: php -l
からの結果は、コードが要求する前に印刷されます。
コード
#!/bin/bash
#Declaring basic variables here
fileToCheck="$1"
oldHash=("")
checksum=("")
#Function to get a striped line as long as the terminal width
function lineAmount {
cwidth=`tput cols`
lines=""
for i in $(seq $(expr $cwidth - 33)); do lines="$lines-";done
echo $lines
}
#Function to show the actual error
function showError {
msg=$1
time=`date +"%c"`
l=$(lineAmount)
if [ "$msg" == "No" ]
then
msg="No errors detected."
fi
printf "\n\n$time $l \n$msg\n"
}
#Start-screen------------------------------------------------
printf "Starting session for $1 at $time \n$(lineAmount)\n"
if [ ! -f $1 ]
then
echo "[Error] File $1 not found."
exit
fi
printf "\n\n\n"
#------------------------------------------
#Printing out error when file changed
while true
do
sleep 0.6
checksum=($(sha256sum $fileToCheck))
checksum=${checksum[0]}
if [ "$checksum" != "$oldHash" ]
then
error=$(php -l $fileToCheck)
oldHash=$checksum
showError $error
fi
done
テストファイル(test.phpを):スクリプトの
<?php
function foo() {
}
?>
出力:
Starting session for /home/name/Desktop/test.php at
-----------------------------------------------
Thu 11 Aug 2016 08:16:15 PM CEST -----------------------------------------------
No errors detected.
今、中もちろん、この意志はエラーを与える
<?php
function foo() {
?>
、そして私のスクリプトは、そのエラーを示しています:test.phpを私は4行目を削除
Starting session for /home/name/Desktop/test.php at
-----------------------------------------------
Thu 11 Aug 2016 08:16:15 PM CEST -----------------------------------------------
No errors detected.
PHP Parse error: syntax error, unexpected end of file in /home/name/Desktop/test.php on line 6
Thu 11 Aug 2016 08:19:37 PM CEST ----------------------------------------------------------------------------------
Parse
しかし、あなたが見ることができるように、これは素晴らしいではありません出力。 PHP Parse error: syntax error, unexpected end of file in /home/name/Desktop/test.php on line 6
は、2番目の点線の下に印刷する必要があります。 「エラーが見つかりません」以下ではありません。 (最初の出力)。
予想される出力:
Starting session for /home/name/Desktop/test.php at
-----------------------------------------------
Thu 11 Aug 2016 08:16:15 PM CEST -----------------------------------------------
No errors detected.
Thu 11 Aug 2016 08:19:37 PM CEST ----------------------------------------------------------------------------------
PHP Parse error: syntax error, unexpected end of file in /home/name/Desktop/test.php on line 6
私は、私のアルゴリズムビットを変更しようとした多くを探索し、多くのことを試してみました。それは動作していません。 問題は、51行目、または29行目のどこかにあると思います。しかし、何が間違っているのかは分かりません。
ありがとうございます!ここで
あなたはどのようにPHPファイルを編集していますか?あなたのエディタはおそらくあなたのために自動保存していますか? –
@EricRenouf私はVimを使用しています。私は:w関数で保存しています。私が知る限り自動保存機能はありません。また、Linux Mintのデフォルトのテキストエディタで試したところ、同じ結果が得られました。 –