パラメータ拡張の問題

パラメータ拡張の問題

user/admin/1/2/[ac]サブディレクトリにはそれぞれ2つのファイルがあります。

このファイルは preQC_1.txt および preQC_2.txt です。どちらのファイルも私のツールへの入力として使用されます。

forループで "${f##*/}"をpreQC_1.txtとして使用しています。

for f in ~/1/2/*/*_1.txt; do exptool input1= "${f##*/}" input2= "{$f%_1.txt}_2.txt"

私のプログラムは "{$f%_1.txt}_2.txt"ファイルを表示し、パラメータ拡張を誤って使用していると100%確信しています。 input2の場合、「preQC_2.txt」(ファイル名+拡張子、ディレクトリリストなし)のみをインポートするにはどうすればよいですか?

編集:「${f##*/}」と{$f%_1.txt}_2.txt」を結合しようとしましたが、実際には「user/admin/1/2/a/preQC_1.txt_2.txt」に拡張されました。

答え1

for f in ~/1/2/*/*_1.txt; do
    file_without_path="${f##*/}"
    exptool input1= "${file_without_path}" input2= "${file_without_pathf%_1.txt}_2.txt"
done

答え2

私は文法エラーを犯しました。"{$f%_1.txt}_2.txt"作成時の正しい形式は"${f%_1.txt}_2.txt"(間違った$文字を入力しました)でした。
:)
編集: 申し訳ありません。ブロック内で"${f%_1.txt}_2.txt"fがまだuser/admin/1/2/a/preQC_1.txt基本的に"${f%_1.txt}_2.txt"値がuser/admin/1/2/a/preQC_2.txt望むものではないので間違いをしました。まず、値を更新することをお勧めし
ます。f

for f in ~/1/2/*/*_1.txt
f=${f##*/}
do exptool input1= "$f" input2= "${f%_1.txt}_2.txt"
done

これはHauke Lagingの答えとほぼ一致しています。

関連情報