Linuxは配列を別々の変数に分割します。

Linuxは配列を別々の変数に分割します。

私は長年にわたってMVSでプログラミングを行ってきましたが、最近はLinuxを使ってプログラミングをしてきたので、まだLinuxの技術は優れていませんが、開発の概念はかなりよく理解されています。

私が望むのは、ファイルディレクトリを読み、拡張子が.trgであるすべてのファイルの名前を取得することです。その後、スクリプトでコンポーネントを参照してファイルの命名に使用できるように、これらの名前を取得して別の変数に保存する必要があります。ファイル名を取得するために find コマンドを使用しました。

param=`find *${file_name}*.trg

これにより、値 (ABC1099R ABC1099C) がロードされた $param 変数が生成され、この変数は ABC1099R.trg および ABC1099C.trg というディレクトリにある 2 つのファイルであるため、後でこの値を個々の変数に割り当てる必要があります。スクリプト。オンラインで何度も検索しましたが、私が見つけたすべての例は、エコーを使用して表示するか、do whileループを使用し、ループ内の個々の値を使用します。後でスクリプトで使用できるように、その変数を独自の変数に割り当てる必要があります。

最初は、次のfor doループを試しました。

for trigger_files in $param; do
    app1=(basename "{trigger_files}" .trg).dat
done

ただし、これはapp1 = ABC1099Rの最初の発生のみを提供します。

すべての項目を別々の変数に保存する必要があります。おそらく20のファイル名があります。ただし、2つのファイル名でのみ機能させることで、多くのファイル名を処理できるようです。

ベストアンサー1

使用する場合、bash方式で行うことを検討してください。

配列は次から取得します(外部findコマンドなし)。

params=( *${file_name}*.trg )

次に、次のように配列を繰り返します。

for file in "${params[@]}"; do
    echo "I'm happily reading the beautiful file $file"
done

.trg拡張を削除して次に置き換えるには、次のようにします.banana

for file in "${params[@]}"; do
    echo "My gorilla loves the file ${file%.trg}.banana"
done

この方法は、正しい引用符で名前に興味深い記号を含むファイルに対して100%安全です。

コメント。常にshopt -s nullglobまたはでワイルドカードを使用してくださいshopt -s failglob

おすすめ記事