[LØST] Add +1 til en string
Heysa.
Jeg har noget replikering der kører omkring MySQL.
Dog ville jeg rigtig gerne have dette til at starte automatisk.
Jeg har fået lavet således jeg har grabbet det rigtige binlog navn --> F.eks. mysql-bin.000004
Hvordan kan jeg lave dette således et bashscript ændrer mysql-bin.000004 - til mysql-bin.000005
Mit bud er hvis jeg lavet alt efter punktum til INT - vil den fjerne de 5 nuller foran - hvilkwet i denne sammenhæng er meget vigtige
Så jeg fået en variable ind - som jeg skal plusse en. så skulle gerne have det samme filnavn --> således jeg kan genstarte min replikering automatisk
Jeg har noget replikering der kører omkring MySQL.
Dog ville jeg rigtig gerne have dette til at starte automatisk.
Jeg har fået lavet således jeg har grabbet det rigtige binlog navn --> F.eks. mysql-bin.000004
Hvordan kan jeg lave dette således et bashscript ændrer mysql-bin.000004 - til mysql-bin.000005
Mit bud er hvis jeg lavet alt efter punktum til INT - vil den fjerne de 5 nuller foran - hvilkwet i denne sammenhæng er meget vigtige
Så jeg fået en variable ind - som jeg skal plusse en. så skulle gerne have det samme filnavn --> således jeg kan genstarte min replikering automatisk
Kommentarer11
Kan du ikke gøre noget som
#!/bin/bash
var="000004"
var2=$(printf "%06d" $((var + 1)))
echo $var2
Hey Julemand.Takker for dit
Takker for dit input
Jeg har leget lidt med dette - men får lidt fejl jeg ikke lige forstår
#!/bin/bash
#
BIN1=`echo mysql-bin.0002345 | rev | cut -d'.' -f 1 | rev `
BIN2=$(printf "%06d" $((BIN1 + 1)))
BINLOG='mysql-bin.'+$BIN2
echo $BIN1
echo $BIN2
echo $BINLOG
giver mig kun output
0002345
001254
mysql-bin.001254
Jeg kan godt se det jeg fik
#!/bin/bash
BIN1=`echo -n mysql-bin.001023`
BIN2=${BIN1: -6}
BIN3=$((10#$BIN2))
BIN4=$(printf "%06d" $((1 + BIN3)))
BINLOG="mysql-bin.$BIN4"
echo $BINLOG
Forskellen er her at jeg ved BIN2 tager de sidste 6 bytes fra BIN1. Ved BIN3 bruger jeg en indbygget Bash funktion til at skære 001023 om til 1023 og først herefter ligger jeg 1 til denne værdi. Noget tyder på at hvis et nummer starter med 00 så tolker bash det som noget andet (måske hex?) når den skal ligge tal sammen.
hvis et nummer starter med
Det er oktaler: http://www.gnu.org/software/bash/manual/bashref.html#Shell-Arithmetic
#4
Super, så giver det fint
Super, så giver det fint mening at skære frontløbende nuller væk for at undgå denne 'feature'. :)
Super, så giver det
Ja, men de skal tilføjes igen til navngivningen af dokumentet, for at overholde betingelsen if. oplysningen i #0, der som jeg opfatter problemet, er nødvendig for videre.
#0: Mit bud er hvis jeg lavet alt efter punktum til INT - vil den fjerne de 5 nuller foran - hvilkwet i denne sammenhæng er meget vigtige.
Beklager hvis denne kommentar er irrelevant.
#6
Tilføjer skam nullerne
Tilføjer skam nullerne igen hvis du ser mit script ;)
Tilføjer skam nullerne
OK ;)
Hey Gutter.Fantastisk forum
Fantastisk forum - fantastiske medlemmer - Jeg bukker og takker mange gange!
@ Julemand - er der så også taget højde for hvis den skifter f.eks fra 99 til 100 - så er der jo et mindre 0 der skal foran ?
Jeg spørger kun for at være sikker EDIT --> Du har du fuldstændig styr på!!!!
Takker for hjælpen!!!
#9
er der så også taget
er der så også taget højde for hvis den skifter f.eks fra 99 til 100
Tsk hvor er jeg er skuffet over du ikke forventer jeg har taget hånd om det. Men som du vil kunne se med:
BIN4=$(printf "%06d" $((1 + BIN3)))
Så angiver jeg at jeg ønsker tallet skal udskrives som et decimal og længden skal være på 6 tegn hvor der vil blive tilføjet frontløbende 0'er. :)
@julemand.
Syntes jeg
Syntes jeg skyndte mig at verificere du havde taget højde for det --> WELL DONE --> Mange tak