Нажмите CTRL +_ и вместо того, чтобы ввести хит номера строки CTRL+V.
Существуют многочисленные проблемы с тем сценарием, но тот, который это вызывает Ваш конкретный вопрос, - то, потому что Вы читаете из канала (вывод ls
).
ls
Используйте это вместо этого
for currentSong in *; do
...
done
Кроме многочисленных причин Вы не должны анализировать ls
, проблема, которую Вы видите, - то, потому что STDIN подключен к выводу ls
. Таким образом, когда Вы проблема a read
, это не может читать из терминала, потому что STDIN не подключен к терминалу.
У Вас есть изрядное количество распространения кавычек вокруг, но все еще скучающий по некоторым. Главным образом только на cd
.
cd "$musicPath"
также
case "$choice"
Используя обратные галочки в порядке иногда. Я часто использую их на командной строке как он быстрее для ввода, чем $()
. Но для сценариев, это - хорошая практика для использования $()
вместо этого.
seconds="$(mdls "$currentSong"|sed -n '20p'|awk '{print $3}'|cut -d. -f1)"
Ваш mkdir
генерирует (безопасный, но шумный) ошибка, если каталоги уже будут существовать. Добавьте a -p
там, который вызовет mkdir
ничего тихо не сделать, если это уже существует
mkdir -p ../Yes