質問: ### 前提・実現したいこと raspberrypi を使い sh(シェルスクリプト) でフォルダ(ディレクトリ)内の最新の画像を発見しそれをFTPサーバに送るプログラムを製作したいです FTPサーバに転送(アップロード)は「ncftp」と言うプログラムを使用しています ### 発生している問題・エラーメッセージ 下記のサイト様を参考にさせて頂いて「raspberrypi」から「sh」で画像は転送(アップロード)出来ました 更に あるフォルダ(ディレクトリ)内の最新の画像を発見するコマンドも発見できました そこでその2つを組み合わせ フォルダ(ディレクトリ)内の最新の画像を探し出し「raspberrypi」から「sh」で転送(アップロード)するプログラムを製作したいです それに伴いこの2つのプログラムの組み合わせ方の記述の仕方がわかりません [Raspberry Pi] ファイルを FTP サーバーへ自動アップロードする http://blog.withachristianwife.com/2017/09/01/uploading-files-to-ftp-server-with-raspberry-pi/ Unix Shell 最新更新日時のファイルパス https://oshiete.goo.ne.jp/qa/6663289.html ### 該当のソースコード 上記のサイト様の使用例を一部書き換えてます プログラム1とプログラム2を組み合わせるための記述の仕方 プログラム1 ``` #!/bin/sh ncftpput -u [FTPユーザーネーム] -p [FTPパスワード] [FTPサーバーアドレス] [アップロード先のディレクトリ] pi/date/★★★.jpg ``` と プログラム2 ``` ls -1t | head -n1 ``` を組み合わせ「★★★.jpg」 (*★★★は「ls -1t | head -n1」で探し出した最新の画像)をFTPサーバに転送(アップロード)するためのsh(シェルスクリプト)の記述の仕方がわかりません ### 試したこと まだまだ初心者でして最近すこしづつですが変数の使い方がわかりかけてきている者です いろんなサイト等をみたりしたのですがどうにも行き詰まりここに助けを求めた次第です ご教授願えないでしょうか
回答: jpegファイルが有った時は、実行する様にしました。 ff=$(ls -1t *jpeg 2>/dev/null | head -n1) && [ -n "$ff" ] && ncftpput -u [FTPユーザーネーム] -p [FTPパスワード] [FTPサーバーアドレス] [アップロード先のディレクトリ] pi/date/$ff raspberrypiでなく申し訳ありません、Linux上にてテストを行った限りでは、送信できました。ですので参考としてください。 ``` #!/bin/sh ff=$(ls -1t /home/hoge/test/*jpeg 2>/dev/null | head -n1) && [ -n "$ff" ] && ncftpput -u hoge -p passwd 127.0.0.1 /tmp $ff ``` 一ラインで書かない方が普通かもしれません ``` #!/bin/sh ff=`ls -1t /home/hoge/test/*jpeg 2>/dev/null | head -n1` if [ -n "$ff" ]; then echo "ncftpput -u hoge -p passwd 127.0.0.1 /tmp $ff" fi ```