«Решение» - это не многократно запускать программы за пределами их требуемой среды, не проверяя их статус выхода. dialog, whiptail и т. д. предназначены для терминалов, поэтому они, конечно, требуют установки TERM. Поэтому вы должны запускать эти сценарии в терминале. То же самое произошло бы с вашим «продвинутым» zenity, yad и т. Д., Если он будет работать без дисплея X11 / Wayland.
В вашем скрипте вы проверяете вывод dialog, в то время как вывод ошибки перенаправления с помощью обычный мощность. Поэтому, когда диалог «сбой и ожоги» и печатает сообщение об ошибке, вы затем сравниваете вывод ошибки в своих условиях if! Зачем вам это делать?
Вы смешиваете синтаксис регулярного выражения (как используется grep) с шаблонами glob (как используется оболочкой).
В regex . означает любой отдельный символ, а * означает ноль или более повторений. Таким образом, grep 'NC022.*nii' совпадает с NC022 до nii с чем-либо (включая ничего) между ними.
Напротив, . является буквальным в globs оболочки, а сам * означает ноль или более символов , Таким образом, NC022.*nii сопоставляет NC022. с nii с чем-либо (включая ничего) между ними.
В частности, если вы пытаетесь сопоставить все файлы с расширением .nii, . находится в неправильном месте: вы хотите NC022*.nii, т. е.
mv NC022*.nii NC022/
Вы смешиваете синтаксис регулярного выражения (как используется grep) с шаблонами glob (как используется оболочкой).
В regex . означает любой отдельный символ, а * означает ноль или более повторений. Таким образом, grep 'NC022.*nii' совпадает с NC022 до nii с чем-либо (включая ничего) между ними.
Напротив, . является буквальным в globs оболочки, а сам * означает ноль или более символов , Таким образом, NC022.*nii сопоставляет NC022. с nii с чем-либо (включая ничего) между ними.
В частности, если вы пытаетесь сопоставить все файлы с расширением .nii, . находится в неправильном месте: вы хотите NC022*.nii, т. е.
mv NC022*.nii NC022/
Вы смешиваете синтаксис регулярного выражения (как используется grep) с шаблонами glob (как используется оболочкой).
В regex . означает любой отдельный символ, а * означает ноль или более повторений. Таким образом, grep 'NC022.*nii' совпадает с NC022 до nii с чем-либо (включая ничего) между ними.
Напротив, . является буквальным в globs оболочки, а сам * означает ноль или более символов , Таким образом, NC022.*nii сопоставляет NC022. с nii с чем-либо (включая ничего) между ними.
В частности, если вы пытаетесь сопоставить все файлы с расширением .nii, . находится в неправильном месте: вы хотите NC022*.nii, т. е.
mv NC022*.nii NC022/