
私はLinuxコマンドを使ってローカルサーバーにファイルがあるかどうかを確認するプログラムを書いています。
プログラムは提供された引数を使用してコマンドを実行します。
ls *ARG_GOES_HERE* &> /dev/null
次に、ステータスを確認してファイルが見つかるかどうかを確認します。
問題は、時にはファイルがこのような直接パスではないということです。
/var/www/html/images/myImage.jpg
時々、画像位置はネットワーク位置を使用して保存される。
http://192.168.1.2/images/myImage.jpg
Linuxコマンドに失敗しました。
bashを使用してローカルのApacheの場所に画像があるかどうかを確認できますか?
答え1
あなたはそれを使用することができますcurl
このコマンドは、ファイルが存在し、HTTP経由でアクセスできることを確認します。次のことがあなたに役立つでしょう:
path_to_file=images/myImage.jpg
if curl --head --location --silent --fail "http://192.168.1.2/$path_to_file" > /dev/null
then
printf "%s exists\n" "$path_to_file"
else
printf "%s does not exist\n" "$path_to_file"
fi
curl
次のオプションを使用してください。
--head
- HTTPヘッダーのみを取得する(本文は不要)--location
- HTTPリダイレクトに従います。--silent
- 進行状況インジケータまたはエラーメッセージは表示されません。--fail
-curl
HTTP要求が失敗すると、コマンドはエラー状態で失敗します。たとえば、Webサーバーが404で応答すると、コマンドはcurl
0(成功)ではなく状態22(エラー)で終了します。