Проблема с mv управляет в сценарии

Должностное лицо 'файл' на всех файлах в текущем directoy, и затем grep для 'ASCII':

find . -maxdepth 1 -exec file {} \; | grep ASCII
1
19.02.2012, 01:09
2 ответа

Проблема не с Вашим mv команда.

Расширение тильды является названием того, что делает оболочка, когда это заменяет ~ символ с корневым каталогом пользователя, например. /home/username. Возможно сказать оболочке не делать это путем заключения в кавычки символа тильды. Это точно, в чем Вы выполнили

DEST="~/scripts/backup"

Вы присвоились к DEST строка ~/scripts/backup. Этот каталог на самом деле не существует. Два решения:

  • Не заключайте в кавычки ~ символ:

    DEST=~/scripts/backup
    
  • Использовать $HOME вместо этого:

    DEST="$HOME/scripts/backup"
    

Заключительная подсказка по отладке

Поместить set -x наверху Вашего сценария для включения xtrace опция. При выполнении этого, Вы видели бы что mv команда использовала неправильный каталог, ~/scripts/backup вместо /home/yourname/scripts/backup.

4
27.01.2020, 23:29

Прочитайте mv руководство

SYNOPSIS
    mv [SOURCE] [DEST]

И можно хотеть проверить, существуют ли $DEST уже:

if [ -d ${DEST} ]; then
    do something
fi

В противном случае используйте mkdir с-p как параметр для создания родительских каталогов.

...
else
    mkdir -p ${DEST}
fi
-1
27.01.2020, 23:29
  • 1
    я действительно пробовал их mv исходная цель также, но та же проблема. Я думаю, что это имеет отношение к '~'. Каталог существует, это не проблема. –  Jérôme Verstrynge 17.02.2012, 23:40
  • 2
    Затем используйте полный путь:/home/user/scripts/backup или Прохладный $HOME –  ramonovski 17.02.2012, 23:42

Теги

Похожие вопросы