解析されたCurl出力を変数に保存する

解析されたCurl出力を変数に保存する

これに助けが必要です。したがって、このコマンドは機能し、私が望む情報、つまり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&paramb=b | grep -Fi Last-Modified)"

しかし、引き続きエラーが発生します。どんなアドバイス?

ありがとう、ジェフ

答え1

コメントで述べたように、&URLに引用符がないとエラーが発生する可能性があります。これは、前のすべてをバックグラウンドプロセスとして実行し、その後のすべてを新しいコマンドで実行しようとします。

URLを引用するか、&記号をエスケープする必要があります。

Last-Mod="$(curl -s -I 'https://someurl/?parama=a&paramb=b' | grep -Fi Last-Modified)"

バラより3.2.4 命令リスト

コマンドが制御演算子「&」によって終了すると、シェルはサブシェルでコマンドを非同期的に実行します。これをバックグラウンドで命令実行と呼び、これらの命令を非同期命令と呼びます。シェルは、コマンドが完了するのを待たずに状態0(true)を返します。

答え2

Bashの変数名にはハイフン(-)を含めることはできません。

名前

文字、数字、下線のみで構成され、文字または下線で始まる単語です。名前はシェル変数と関数名として使用されます。識別子とも呼ばれます。

(からバッシュ文書)。操作を効果的に行うには、名前を次のLast-Modように変更します。Last_Mod

関連情報