kosovafan
Erfahrenes Mitglied
Hallo,
ich bin mir nicht sicher ob ich hier richtig bin, aber ich probiere es einfach mal. Ich habe
mir folgendes Script gebastelt das nichts anderes macht als für Hugo ein MD File im
entsprechenden Content / Language Ordner anzulegen.
Das Script wird aufgerufen ./bin/new.sh de gesellschaft "Das ist der Title" cover.
Es geht mir um das Cover, was eigentlich nur aus den Array en=() kommen braucht. Es wird geprüft ob der tag ($2) im entsprechenden Array lang=() ist, mit einer Array Abfrage gibt es ein item + index. Wie kann man es schaffen den index des jeweiligen tag in cover einzutragen (create_file)? So müsste man Cover nicht eingeben! Ich habe im Internet gesucht, tausende von Bash Tutorials gelesen, aber ich werde irgendwie nicht fündig. Vielleicht hat hier jemand eine Idee?
Mfg & Danke
Silvio
ich bin mir nicht sicher ob ich hier richtig bin, aber ich probiere es einfach mal. Ich habe
mir folgendes Script gebastelt das nichts anderes macht als für Hugo ein MD File im
entsprechenden Content / Language Ordner anzulegen.
Bash:
#!/usr/bin/env bash
# variables through user input
lang=$1
tags=$2
tmp_title=$3
cover=$4
# variables which we use in script
# create a title with small letters and remove whitespace
title=$(echo ${tmp_title,,} | sed -e 's/\s/-/g')
# date variables
date=$(date +"%Y-%m-%d")
year=$(date +"%Y")
month=$(date +"%m")
# content variables
content_dir="./content/$lang/blog/$year/$month"
file="$content_dir/$title.md"
# language tag arrays
de=(computer medien staat gesellschaft)
en=(computer media state society)
# funtion
function create_file()
{
{
echo "---"
echo "title: \"$tmp_title\""
echo "date: $date"
echo "draft: false"
echo "tags: \"$tags\""
echo "shorttext:"
echo "cover: \"$cover\""
echo "lang: $lang"
echo "---"
} >> "$file"
}
case $lang in
de)
if test -n "$lang"; then
# check tag is in array
if [[ ${de[*]} =~ $tags ]]; then
# check the folder structure is right
if [[ -d "$content_dir" ]]; then
# create the content and fill up the file
create_file
if [[ -f "$file" ]]; then
subl "$file"
fi
else
# create the folder of content
mkdir -p "$content_dir"
# create the content and fill up the file
create_file
if [[ -f "$file" ]]; then
subl "$file"
fi
fi
else
echo "Enter a valid tag name ..."
fi
fi
;;
en)
if test -n "$lang"; then
# check tag is in array
if [[ ${en[*]} =~ $tags ]]; then
# check the folder structure is right
if [[ -d "$content_dir" ]]; then
# create the content and fill up the file
create_file
if [[ -f "$file" ]]; then
subl "$file"
fi
else
# create the folder of content
mkdir -p "$content_dir"
# create the content and fill up the file
create_file
if [[ -f "$file" ]]; then
subl "$file"
fi
fi
else
echo "Enter a valid tag name ..."
fi
fi
;;
esac
Das Script wird aufgerufen ./bin/new.sh de gesellschaft "Das ist der Title" cover.
Es geht mir um das Cover, was eigentlich nur aus den Array en=() kommen braucht. Es wird geprüft ob der tag ($2) im entsprechenden Array lang=() ist, mit einer Array Abfrage gibt es ein item + index. Wie kann man es schaffen den index des jeweiligen tag in cover einzutragen (create_file)? So müsste man Cover nicht eingeben! Ich habe im Internet gesucht, tausende von Bash Tutorials gelesen, aber ich werde irgendwie nicht fündig. Vielleicht hat hier jemand eine Idee?
Mfg & Danke
Silvio
Zuletzt bearbeitet: