Вопрос о расширении параметров

У меня есть 2 файла в подкаталогах user / admin / 1/2 / [ac].

Файлы preQC_1.txt и preQC_2.txt – оба из которых будут входами в моем инструменте.

Я использую «$ {f ## * /}» для preQC_1.txt в моем цикле for

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' (имя файла + расширение без списка каталогов)?

EDIT: Я пробовал комбинировать «$ {f ## * /}" и {$ f% _1.txt} _2.txt ", но это фактически расширяется до 'user / admin / 1/2 / a / preQC_1.txt_2.txt '

2 Solutions collect form web for “Вопрос о расширении параметров”

 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 

Вы просто сделали синтаксическую ошибку: вы написали "{$f%_1.txt}_2.txt" а правильная форма – "${f%_1.txt}_2.txt" (вы "${f%_1.txt}_2.txt" $ ).
🙂
Edit: woops, я понял, что неправильно, потому что в блоке "${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 

который в значительной степени присоединяется к ответу Хауке Лейджинга.

  • Expect Script - файл сценария bash не найден
  • Почему моя установка Arch устанавливается на случайных этапах во время загрузки?
  • Фильтр почтовых уведомлений Thunderbird
  • чтение карты, убивающее мою батарею, на macbook pro работает Debian
  • Почему неправильная раскладка клавиатуры на желтой собаке?
  • sqlcmd не работает на mac, Can not open lib '/usr/local/lib/libmsodbcsql.13.dylib'
  • Как щелкнуть правой кнопкой мыши на компьютере с одной кнопкой?
  • Grub 2 установлен на разделы - как не вставлять его
  • Отключить устройство Bluetooth на Ubuntu
  • Когда я закрываю крышку отсека для ноутбука?
  • Как установить Vinux на Mac?
  • Linux и Unix - лучшая ОС в мире.