Dėl Shell scenarijaus kūrimo

M
  • 26 Geg '15

Sveiki,
Neseniai pradėjau dirbi su Linux scenarijais, norėčiau jūsų pagalbos, kadangi niekaip nesusitvarkau su užduotimi viena. Noriu padaryt, kad parašau į tekstinį failą pirmoj eilutėj žodžius, bet kokius, ir nurodau koks katalogas, ir tam kataloge scenarijus sukuria katalogus.

Pvz: parašau failą "Pavadinimai", tame faile toki katalogų pavadinimai : "PirmasisKatalogas" "Antrasiskatalogas"

Antroje eilutėje parašau adresą iki katalogo, kuriame turi būt sukurti tie katalogai tokiais pavadinimais:

/bandymai/sukurspats/

tai scenarijus turėtų padaryt taip:

  1. Paimt iš failo "Pavadinimai" pirmos eilutės žodžius ir pagal juos kataloge /bandymai/sukurspats/ sukurti tokius katalogus, kokie žodžiai yra faile pavadinimai.

Pradėjau rašyt kažką taip :

$1 > pavadinimai;
$2 > katalogas;
cd katalogas;
mkdir pavadinimai;

Bet čia nesamonė, nesuprantu kaip man nuskaityti tą failą ir kaip sukurti iš to failo paėmus pirmos eilutės žodžius katalogus...

M
  • 26 Geg '15

Nes čia realiai turi būt 1 tekstinis failas, tame tekstiniame faile pirmoj eilutėj turi būt pavadinimai, antroj turėtų būt katalogas kuriame sukurti reikia pagal pavadinimus kitus katalogus, tačiau dar nesigaudau gerai logikoje kaip tai padaryti, o pasiskaityt apie tai nerandu kur.

G
  • 26 Geg '15

Pavadinimai.txt

PirmasisKatalogas AntrasisKatalogas
~/bandymai/sukurspats/

scenarijus.sh

#!/bin/bash
pavadinimu_failas=${1:-/dev/null}
eval pirminis_katalogas=$(tail -1 "$pavadinimu_failas")
antriniai_katalogai=$(head -1 "$pavadinimu_failas")

echo 'Sukuriu pirmini kataloga, jei tokio nera:'
mkdir -pv "$pirminis_katalogas"

echo 'Kuriu antrinius katalogus:'
for kat in $antriniai_katalogai; do
  mkdir -pv "$pirminis_katalogas"/"$kat"
done

Naudojimas:

source scenarijus.sh Pavadinimai.txt

Pasiskaityt apie Bash gali:
http://www.gnu.org/software/bash/manual/bashref.html

Arba skaityk savo kompe, nes beveik visos komandos turi savo man page (dokumentaciją):

man bash
man tail
man head
man mkdir

Jei nori pasitikrint, ar turi kompe komandos dokumentaciją:

man -k komandos-pavadinimas
M
  • 31 Geg '15

Ačiū, dabar supratau kur dariau klaidą, čia visai viskas kitaip nei komandų eilutėj Dėkui Tau labai

G
  • 31 Geg '15

@morphxp rašė:
Ačiū, dabar supratau kur dariau klaidą, čia visai viskas kitaip nei komandų eilutėj Dėkui Tau labai

Čia tu klysti Scenarijaus vienintelis tikslas - įvykdyti eilę komandinės eilutės komandų, kurias kitu atveju gali suvesti komandinėje eilutėje ir rezultatas bus tas pats. Taigi viskas atvirkščiai - viskas yra tiksliai taip, kaip būtų komandinėje eilutėje Bet buvo malonu pasitarnauti