
Linuxのシェルを作成しており、その中でFTP接続をしてます。
接続先の特定のファイルのファイルサイズをチェックして、それを変数に入れたいのですが、
変数に入れる部分がわかりません。
Linux内の特定のファイルをFTPで転送して、転送後のファイルサイズが一致してるかをチェックするために上記の対応を行ってます。
FTP接続後に以下のコマンドで、ファイルサイズが調べられることは解りました。
quote SIZE ファイル名
この結果を変数に代入するにはどうすればいいでしょうか?
FTP接続中にそのような対応は可能なのでしょうか?
ちなみに、Linux上では既にファイルサイズを取得している(変数に入れてある)ので、
あとは、この変数と、FTP上で取得したファイルサイズの比較をやりたい。といった状況です。
FTP側で取得したファイルサイズを変数に入れられず困っています。
変数代入方法等ありましたらご教授願います。
No.2ベストアンサー
- 回答日時:
理解してもらえなかったみたいなので、サンプルを書きます。
ご提示のサンプルはヒアドキュメント構文が間違っていたり、ログを取る必要性があるみたいなので多少変えました。
コマンドはlftpにしてますが、こっちのほうが使い勝手がいいと思います。
ftpコマンドのVervoseオプションだとサーバーからのレスポンスが全部戻ってきて制御構造をするためには加工をする必要がありますから。
(test1.sh)
---<ここから>---
#!/bin/bash
NASIP=IPアドレス
TARGET=ファイル名
lftp $NASIP <<END | tee Log.txt
user ユーザー パスワード
put /log/$TARGET /log/$TARGET
quote SIZE /log/$TARGET
bye
END
---<終了>---
というシェルスクリプトを作ります。
これでシェルから
% size=`./test1.sh` && echo $size
とすればSIZEコマンドの標準出力が変数に入りませんか?
丁寧な説明ありがとうございました。
また回答が遅れ申し訳ありません。
確かに希望通りの動作を得られました。助かりました。
ありがとうございます。
No.1
- 回答日時:
可能です。
コマンドの標準出力を変数に格納すれば良いのです。ftpサイトに接続するシェルスクリプトを作成し、ここではサブルーチンと見なします。
そのシェルスクリプトを呼び出すシェルスクリプトを作成し、メインルーチンと見なします。
メインルーチンからサブルーチンをバッククォートもしくは$()で呼びだし、サブルーチンの標準出力をメインルーチンの変数に格納すればいいのです。
サンプルはこんな感じ。
(メインルーチン)
size=`./サブルーチンのファイル名`
sizeという変数にサブルーチンの表示結果が入ります。
回答ありがとうございました。
試して見たのですが、 quoteコマンドが実行できないというエラーが出てしまいました。↓
[root@logserv test]# sh test1.sh
test1.sh: line 77: quote: command not found
やり方が違うのでしょうか?
コードを記述しますので、アドバイスいただけますでしょうか?
ftp -i -v -n $NASIP <<END >>Log.txt
user uset1 user1
bin
put /log/$TARGET /log/$TARGET
size=`quote SIZE /log/$TARGET`
bye
ちなみに、size=`` を記述していない状態では、quoteは正常に動いていました。
変数sizeにquoteの結果を代入する方法を教えて下さい。
お手数ですが、宜しくお願いします。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Core 2 Duo の古いパソコンに最...
-
linuxのインストール
-
ubuntu(linux)のシャットダウン...
-
インストールできないですどう...
-
VirtualBox 6.1 → 7.1 でUbuntu...
-
「/var/log」内のログの削除の...
-
Linux のシェルスクリプトの強...
-
ubuntu が起動しない。
-
LinuxでWine使うとどのくらいWi...
-
bashでシングルクォート内の変...
-
ssl_error_logのエラー内容(AH...
-
ubuntuのシャットダウンが進ま...
-
ubuntuで デイスク/deb/loopと...
-
Ububtuでファイル共有できない...
-
Ubuntu でinvalid filenameとな...
-
Rasberry pi のオンボードNICの...
-
linuxサーバーのキャッシュをク...
-
Linuxでブートディスクの交換後...
-
他のLinuxでも動くa.outの作り方
-
ssl_request_logの必要性について
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
scpコマンドでリモートサーバの...
-
【ターミナル】MacBookにディー...
-
Illustratorのデータをまとめて...
-
DOSコマンドでのワイルドカ...
-
Windows10のRegSys32に登録され...
-
telnet,rlogin,rshの違いってな...
-
IBM漢字コードのSJIS変...
-
rcpコマンドについて、教えて!
-
コマンドでのコンピュータ名変...
-
DOSのAUTOEXEC.BATの書き方、等
-
cactiでグラフが表示されない
-
wgetの正規表現について
-
FTP接続中のコマンド実行結果を...
-
AIX ksh利用 grep 検索で マ...
-
linuxのreadコマンドについて
-
今年の経過日数 linixコマンド...
-
属性変更できないです。
-
Solaris rmコマンドをシェルで...
-
Linux9でのCUIの日本語表示につ...
-
lsコマンドで表示するファイル...
おすすめ情報