Bash - utworzenie nieistniejącego katalogu

0

Posiadam w katalogu podkatalogi o nazwach:

0
1
2

Potrzebuję za pomocą skryptu utworzyć kolejny katalog o nazwie "4". Jeśli taki będzie to o nazwie "5", itd..

Utworzyłem pętlę

while [ ! -d $licznik ]
do
    echo $licznik
    mkdir $licznik
    licznik=$(( $licznik + 1))
done

Jest z nią problem taki, iż działa w nieskończoność. Ja potrzebuję taką logikę, gdzie jak już utworzy katalog, aby pętla się przerywała.
Gdzie popełniam błąd?

4

Nie sprawdzasz, czy katalog istnieje tylko lecisz na chama dalej. Tu masz pokazane jak sprawdzić, czy utworzenie katalogu się udało.

3

Zakładając brak luk między liczbami

mkdir $(($(ls | sort -n | tail -1)+1))
3
mkdir $((`ls -f | wc -l` - 2))

-2 na . i ..

1

Twoja pętla ma logikę w złą stronę.
Co zgaduję, że chciałeś zrobić: jeżeli katalog $licznik istnieje, zwiększ licznik i odpal pętlę ponownie; pętla kończy się, gdy znajdzie nieistniejący katalog
Co robisz: jeżeli katalog $licznik nie istnieje, stwórz go; zwiększ licznik i odpal pętlę ponownie; pętla kończy się, gdy znajdzie istniejący katalog

0

Czy ktoś jest w stanie mnie ukierunkować z logiką, na podstawie instrukcji warunkowych oraz pętli? Logika jest tutaj niespełniona, to już wiem, ale nie wiem jak podołać.

Proszę o pomoc.

0

Data w systemach Linux-owych pamiętana jest jako liczba sekund od 1.1.1970
Poniżej masz skrypt, który generuje następną datę:

#!/bin/bash

#ile sekund ma doba
day=$[24*60*60] 

last_day=`date +%s`
next_day=[$day+$last_day]

echo `date --date=@${next_day}`

Teraz trzeba połączyć wyszukiwanie ostatniej daty i połączyć z tworzeniem następnej.

Zakładając, że tworzysz katalogi tylko przy użyciu tego skryptu, to możesz posortować nazwy wg daty (jak wyżej miałeś przykład).
Następnie bierzesz ostatnią nazwę katalogu, zamieniasz na datę w sekundach, dodajesz liczbę sekund odpowiadającą dobie.
Zamieniasz to na datę i tworzysz taki katalog.

0

Może się komuś przyda

i=0
while [ -d "$licznik" ]; do
    ((licznik++))
done
mkdir -v "$licznik"

1 użytkowników online, w tym zalogowanych: 0, gości: 1