2

シェル スクリプトで 2 つのファイルにアクセスする必要があります。唯一の問題は、ファイル名がシステムで生成されるため、ファイル名がどうなるかわからないことです。ファイル名の一部は常に一定ですが、残りはシステムで生成されるため、異なる場合があります。これらのファイルにアクセスする方法がわかりません。

サンプル ファイル名

タイプ1

MyFile1.yyyy-mm-dd_xx:yy:zz.log

この場合、MyFile1 の部分はすべてのファイルで一定であり、他の部分は日付と時刻に基づいて変化することがわかっています。を使用date +%Y-%m-%dして取得できMyFile1.yyyy-mm-dd_ますが、正しいファイルを選択する方法がわかりません。毎日、この種のファイルは 1 つしかないことに注意してください。UNIX では、以下のコマンドで正しいファイルが得られます。

unix> ls MyFile1.yyyy-mm-dd*

タイプ2

MyFile2.yyyymmddxxyyxx.RandomText.SomeNumber.txt

このファイルでは、Myfile2 の部分が一般的であることがわかります。ユーザーは Date +%Y%m%d(現在の日付) まで取得できますMyFile2.yyyymmddが、そこから先に進む方法があまり明確ではありません。UNIX では、以下のコマンドで正しいファイルが得られます。また、ファイル 2 の dd 列に以前の日付があります。

unix> ls MyFile2.yyyymmdd*

基本的に私のシェルスクリプトで次の行を探しています

#!/bin/ksh
timeA=$(date +%Y-%m-%d)
timeB=$(date +%Y%m)
sysD=$(date +%d)
sysD=$((sysD-1))
filename1=($Home/folder/MyFile1.$timeA*)
filename2=($Home/folder/MyFile2.$timeB$sysD*)

これら 2 つのファイルの RHS を取得する方法がわかりません。

上記のスクリプトを実行したときの結果は次のとおりです。

Script.ksh[8]: syntax error at line 8 : `(' unexpected
4

1 に答える 1

2

多分これ

$ file=(MyFile1.yyyy-mm-dd*)

$ echo $file
MyFile1.yyyy-mm-dd_xx:yy:zz.log

この方法で変数を宣言する必要があることに注意してください。

foo=123

いいえ

foo = 123

気をつけて、悪い

filename1=$($HOME/folder/MyFile1.$timeA*)

良い

filename1=($HOME/folder/MyFile1.$timeA*)
于 2013-04-16T00:30:15.947 に答える