rm нескольких файлов в скрипте

На самом деле это единственный раздел про unix на этом форуме

Модератор: /dev/random

Аватара пользователя
nerve
Сообщения: 267
ОС: OpenBSD

rm нескольких файлов в скрипте

Сообщение nerve » 13.05.2016 11:17

Shell

# ls -la test total 8 drwxr-xr-x 2 root root 4096 May 13 10:04 . drwxr-xr-x 3 root root 4096 May 13 10:00 .. -rw-r--r-- 1 root root 0 May 13 09:59 file.123.lst -rw-r--r-- 1 root root 0 May 13 09:59 file.123.txt -rw-r--r-- 1 root root 0 May 13 10:04 file.txt # cat script.sh #!/bin/sh set -x VAR=123 rm ./test/{file.txt,file.$VAR.txt,file.$VAR.lst} # ./script.sh + VAR=123 + rm ./test/{file.txt,file.123.txt,file.123.lst} rm: cannot remove `./test/{file.txt,file.123.txt,file.123.lst}': No such file or directory # echo $VAR 123 # rm ./test/{file.txt,file.$VAR.txt,file.$VAR.lst} # ls -la test total 8 drwxr-xr-x 2 root root 4096 May 13 10:12 . drwxr-xr-x 3 root root 4096 May 13 10:00 ..

Спасибо сказали:

Аватара пользователя
/dev/random
Администратор
Сообщения: 4866
ОС: Gentoo

Re: rm нескольких файлов в скрипте

Сообщение /dev/random » 13.05.2016 11:29

nerve писал(а):
13.05.2016 11:17

Shell

rm: cannot remove `./test/{file.txt,file.123.txt,file.123.lst}': No such file or directory


Синтаксис {a,b,c} не входит в стандарт. Полагаю, у вас в качестве интерактивной оболочки bash, а /bin/sh - симлинк на что-то вроде dash. Измените шебанг в скрипте.
Спасибо сказали:

Аватара пользователя
nerve
Сообщения: 267
ОС: OpenBSD

Re: rm нескольких файлов в скрипте

Сообщение nerve » 13.05.2016 11:44

как все просто оказывается.
после изменения шебанга на баш все стало работать:)

Shell

# ls -la `which sh` lrwxrwxrwx 1 root root 4 Nov 7 2012 /bin/sh -> dash # ls -la `which bash` -rwxr-xr-x 1 root root 811156 Apr 10 2010 /bin/bash + rm -v ./test/file.txt ./test/file.123.txt ./test/file.123.lst removed `./test/file.txt' removed `./test/file.123.txt' removed `./test/file.123.lst'


а обнаружилось случайно: утром пожаловались что всякое разное не работает, ну думаю "началось".
смотрю почту - а там письмо от заббикса что на майскл закончилось место и соответственно демон mysql лег.
скрипт бекапа оставлял после себя файлы, которые должны были удалятся.
Спасибо сказали: