Зверніть увагу, що ваше визначення destDIR
зовсім не встановлює його значення; вона просто намагається запустити програму /data
з цим набором змінних. Оскільки програма /data
не називає, нічого змістовного не відбувається.
Бачачи, то, як $destDIR
не визначено, ваш mv
командний рядок зводиться до чогось такого:
mv /Volumes/MCOOPER/data/run10.mat /
Тоді здається розумним припустити, що ваші файли переміщені в кореневу директорію. Ви там перевіряли?
Також, як загальна порада, є щонайменше три речі, які ви, можливо, захочете звикнути уникати подібних аварій у майбутньому:
- Завжди цитуйте розширення параметрів, якщо ви просто не хочете, щоб вони були розділеними на слова:
mv "$sourceDIR/run$i.mat" "$destDIR"
- Якщо ви чітко не знаєте, що хочете замінити файли, запустіть
mv
за допомогою -i
перемикача, щоб уникнути випадкової заміни.
- Коли ви знаєте, що хочете перемістити речі в каталог, корисно поставити остаточну косу рису на ім'я цього каталогу як захист від випадкового перейменування файлів. Це:
destDIR=/Volumes/MCOOPER2/data/
Крім того, ви можете або не можете, залежно від ваших обставин, хотіти запустити set -e
, щоб зробити оболонку вихід, як тільки будь-яка команда не виконана, замість того, щоб продовжувати наступні команди.
destDIR
це не визначено, малоймовірно, що цей сценарій взагалі нічого б не зробив. (Якщо це не відрізняється від того, що ви нам показуєте.)