これに助けが必要です。したがって、このコマンドは機能し、私が望む情報、つまりLast-Modified応答ヘッダーを表示します。
ubuntu:~$ curl -s -I "https://someurl/?someparam" | grep -Fi Last-Modified
返品:
**last-modified: Tue, 22 Mar 2022 17:33:35 GMT**
私が望むのは、それを変数に保存することです。 「Last-Mod」と言ってから、現在の日付と比較して、過去1〜2日間にコンテンツが更新されたことを確認します(ファイルです)。更新されたらダウンロードを続けたいと思います。私は次のようなさまざまな構文を試しました。
Last-Mod="$(curl -s -I https://someurl/?parama=a¶mb=b | grep -Fi Last-Modified)"
しかし、引き続きエラーが発生します。どんなアドバイス?
ありがとう、ジェフ
答え1
コメントで述べたように、&
URLに引用符がないとエラーが発生する可能性があります。これは、前のすべてをバックグラウンドプロセスとして実行し、その後のすべてを新しいコマンドで実行しようとします。
URLを引用するか、&記号をエスケープする必要があります。
Last-Mod="$(curl -s -I 'https://someurl/?parama=a¶mb=b' | grep -Fi Last-Modified)"
バラより3.2.4 命令リスト
コマンドが制御演算子「&」によって終了すると、シェルはサブシェルでコマンドを非同期的に実行します。これをバックグラウンドで命令実行と呼び、これらの命令を非同期命令と呼びます。シェルは、コマンドが完了するのを待たずに状態0(true)を返します。
答え2
Bashの変数名にはハイフン(-
)を含めることはできません。
名前
文字、数字、下線のみで構成され、文字または下線で始まる単語です。名前はシェル変数と関数名として使用されます。識別子とも呼ばれます。
(からバッシュ文書)。操作を効果的に行うには、名前を次のLast-Mod
ように変更します。Last_Mod