Skapa skript i skript (Nybörjare)

Här diskuterar vi skal, kommandon och klassiska linuxverktyg.
Användarvisningsbild
flierman
Inlägg: 240
Blev medlem: 12 aug 2007, 22:18
OS: Ubuntu
Utgåva: 24.04 Noble Numbat LTS
Ort: Östersund, Sweden

Skapa skript i skript (Nybörjare)

Inlägg 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
Användarvisningsbild
Konservburk
Inlägg: 5919
Blev medlem: 07 apr 2007, 22:28

Re: Skapa skript i skript (Nybörjare)

Inlägg 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
Skriv svar

Återgå till "Terminalforum"