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

У меня есть 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 

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

  • Команды Bash, не работающие на Mac
  • Проверка скрипта скрипта Vim
  • Crontab не может связаться с несколькими Mac?
  • Как установить CentOS 6.4 на Mac Mini?
  • как изменить команду CC по умолчанию на mac os?
  • Как устранить проблему с исключительными разрешениями - Rasp Pi, HFS +, SMB, Mac
  • live USB linux на macbook pro в середине 2012 года
  • Двойная загрузка на Macbook Pro 7,1.
  • Почему / usr / sbin / racoon требуют входящих соединений, когда VPN активен в MacOS Sierra
  • Mac OS не может подключить диск exFAT, созданный в (Ubuntu) Linux
  • Установка GRUB2 на GPT-диске в разделе
  • Linux и Unix - лучшая ОС в мире.