Sida 1 av 1

Skapa skript i skript (Nybörjare)

Postat: 24 sep 2013, 18:20
av flierman
Hej på er!

Jag är nybörjare i skript-skapande och försöker lära mig via en kurs. Jag undrar hur jag ska göra i detta fall? Uppgiften är att skapa ett skript som i sin tur ska skapa ett skript som skapar andra filer och mappar och text i dessa filer. Ska jag behöva skriva alla enstaka kommandon och peka mot det nya skriptet eller kan jag med något kommando skriva ner det som ska göras på något annat sätt.

skript1.sh ska skapa en fil som heter micke.txt och en mapp som heter kalle. Det ska sedan skapas ett nytt skript som heter skript2.sh som ska skapa två nya filer och två ny mappar.

Förmodar att jag börjar så här i skript1.sh:

Kod: Markera allt

#!/bin/bash
mkdir kalle
touch micke.txt skript2.sh
Då har jag skapat textfilen micke och det nya skriptet skript2.

Hur får jag sedan in de kommandon som skript2 ska göra in i filen skript2.sh är min fråga? Ska jag peka alla kommandon var för sig till >skript2.sh eller finns något smidigare sätt?

Så här har jag börjat nu inne i skript1.sh men det känns inte rätt och väldigt osmidigt...

Kod: Markera allt

#!/bin/bash
mkdir kalle
cd  kalle
touch micke.txt skript2.sh
#skapat de två första filerna

#Vill nu skriva in kommandon i filen skript2.sh
touch filtre.txt filfyra.txt >~/kalle/skript2.sh
mkdir mappen1 mappen 2 >~/kalle/skript2.sh

#Kör skriptet 2 inne i skript1
chmod u+x skript2.sh
./skript2.sh
Eller kan jag på något annat enklare sätt skriva in allt som ska in i skript2.sh innan jag kör skriptet? Typ så här:

"något bra kommando">skript2.sh
touch fil3.txt filfyra.txt
mkdir mappen1 mappen 2
fler kommandon
fler kommandon

Jag har funderat på EOF, är det rätt tänkt att skriva in detta i skript1? (om nedan nu är korrekt skrivet?)

Kod: Markera allt

cat >> skript2.sh << EOF
kommando 1
kommando 2
kommadon 3
EOF

Re: Skapa skript i skript (Nybörjare)

Postat: 24 sep 2013, 19:20
av Konservburk
flierman skrev:Jag har funderat på EOF, är det rätt tänkt att skriva in detta i skript1? (om nedan nu är korrekt skrivet?)

Kod: Markera allt

cat >> skript2.sh << EOF
kommando 1
kommando 2
kommadon 3
EOF
Det är helt rätt tänkt och kallas Here Document ifall du vill hitta mer information. Ett bra tips är att sätta ett backslash framför det övre EOF så kommer t.ex. variabler i det inre skriptet inte att ersättas från det yttre. Det brukar kunna bespara nybörjare en hel del hyvudbry.

Du behöver inte mellanlagra skriptet i en egen fil om du inte vill. Det går lika bra att skicka det direkt till sh istället.

Jämför dessa båda för att se skillnaden med och utan backslash:

Kod: Markera allt

a=nej
sh <<\EOF
a=ja
echo "$a"
EOF

Kod: Markera allt

a=nej
sh <<EOF
a=ja
echo "$a"
EOF