[[:linux|Linux]] console is programmed using bash. Siehe auch [[coding:batch|batch]] for [[:windows|windows]]. # This is a single line comment << 'MULTILINE-COMMENT' This is a multiline comment MULTILINE-COMMENT name=Manuel // set variable echo $name // use variable echo $# // no of arguments passed echo $1 $2 // print 1st and 2nd argument echo -n TopSecret | md5sum rename 's/old_pattern/new_pattern/' *.txt command_name | while IFS= read -r line; do # Verarbeite jede Zeile hier echo "Zeile: $line" done Arrays #!/bin/bash # Declare an associative array called fruits declare -A fruits # Assign key-value pairs to the array fruits[apple]="red" fruits[banana]="yellow" fruits[grape]="purple" # Print specific element echo "The color of an apple is ${fruits[apple]}." # Iterate through the array for key in "${!fruits[@]}"; do echo "$key: ${fruits[$key]}" done =====if else===== password="lowsecret" if [ $password = "topsecret" ] then echo "yes" else echo "no" fi if [ $1 -eq $2 ] then .... fi ^Parameter^Description^ |-eq|equals| |-ne|not equals| |-lt|lower than| |-gt|greater than| |-le|lower equals| |-ge|greater equals| =====For While===== for i in {1..5}; do echo $i done counter=0 while [ $counter -lt 5 ]; do echo $counter counter=$((counter + 1)) done =====Functions===== function greet() { echo $1 } greet "Manuel" // oder so func_result="$(greet Manuel)" echo $func_result =====Files===== if [ -d "verzeichnis" ]; then echo "Das Verzeichnis existiert." fi if [ -f "datei.txt" ]; then echo "Die Datei existiert." fi =====Example===== #!/usr/bin/bash if [ "${1}" = "" ]; then echo "Verwendung: ${0} " exit fi if [ ! -d "${1}" ]; then echo "Verzeichnis \"${1}\" existiert nicht" exit fi if [ "${2}" = "" ]; then echo "Verwendung: ${0} " exit fi if [ ! -d "${2}" ]; then echo "Verzeichnis \"${2}\" existiert nicht" exit fi if [ "${3}" = "" ]; then echo "Verwendung: ${0} " exit fi if [ ! -d "${3}" ]; then echo "Verzeichnis \"${3}\" existiert nicht" exit fi export LANG=de_DE@euro.ISO-8859-15 export LC_ALL=de_DE.ISO-8859-15 export LC_MESSAGES=de_DE.CP858 export LC_COLLATE=de_DE.CP858 export LC_CTYPE=de_DE.CP858 echo "File;Zeilen altes File;Zeilen neues File;Entfallene Zeilen;Entfallen Prozent;Hinzugekommene Zeilen;Hinzugekommen Prozent" for FILE in `ls -l ${1}/ | sed -e "s/.* //1" | grep -a "\.csv" | sed -e "s/\.csv//1"`; do cat "${1}"/${FILE}.csv | grep -ai "Pfad;Identitaet;Rechte" |tr [:upper:] [:lower:] > "${3}/${FILE}_old_sorted.csv" cat "${1}"/${FILE}.csv | grep -vai "Pfad;Identitaet;Rechte" |tr [:upper:] [:lower:] | sort >> "${3}/${FILE}_old_sorted.csv" cat "${2}"/${FILE}.csv | grep -ai "Pfad;Identitaet;Rechte" |tr [:upper:] [:lower:] > "${3}/${FILE}_new_sorted.csv" cat "${2}"/${FILE}.csv | grep -vai "Pfad;Identitaet;Rechte" |tr [:upper:] [:lower:] | sort >> "${3}/${FILE}_new_sorted.csv" cat "${3}/${FILE}_old_sorted.csv" | grep -ai "Pfad;Identitaet;Rechte" > "${3}/${FILE}_entfallen.csv" diff "${3}/${FILE}_old_sorted.csv" "${3}/${FILE}_new_sorted.csv" | grep -a "^<" | sed -e "s/^< //1" >> "${3}/${FILE}_entfallen.csv" cat "${3}/${FILE}_old_sorted.csv" | grep -ai "Pfad;Identitaet;Rechte" > "${3}/${FILE}_neu.csv" diff "${3}/${FILE}_old_sorted.csv" "${3}/${FILE}_new_sorted.csv" | grep -a "^>" | sed -e "s/^> //1" >> "${3}/${FILE}_neu.csv" ANZ1=`cat "${1}"/${FILE}.csv | wc -l` ANZ2=`cat "${2}"/${FILE}.csv | wc -l` ANZ3=`cat "${3}/${FILE}_entfallen.csv" | wc -l` ANZ4=`cat "${3}/${FILE}_neu.csv" | wc -l` PROZ1=`echo "($ANZ3*100)/$ANZ1" | bc` PROZ2=`echo "($ANZ4*100)/$ANZ2" | bc` echo "${FILE}.csv;${ANZ1};${ANZ2};${ANZ3};$PROZ1%;${ANZ4};$PROZ2%" #if [ $ANZ1 = $ANZ3 ]; then # echo "Achtung ${FILE}.csv ==== Entfallen = Alt" #elif [ $ANZ2 = $ANZ4 ]; then # echo "Achtung ${FILE}.csv ==== Hinzugekommen = Neu" #fi rm -f "${3}/${FILE}_old_sorted.csv" "${3}/${FILE}_new_sorted.csv" done =====Links===== * [[https://www.youtube.com/watch?v=tK9Oc6AEnR4|Bash Scripting Tutorial for Beginners]]