[linux] Met bash parameter functie aanroepen

Frans van Berckel fberckel op xs4all.nl
Zo Dec 17 19:31:14 CET 2017


On Sun, 2017-12-17 at 16:21 +0100, Frans van Berckel wrote:

> Ik ben een bash script aan het schijven. Een onderdeel daarin plaats
> ik het liefst in een functie, met de naam download.
> 
> De vraag is alleen, hoe kan ik deze functie het beste laten
> uitvoeren, met een parameter bij het starten van het script?
> 
> # lnxsrc2pkg.sh download
> 
> De opzet is, als dat werkt, omdat met meer functies te doen.
> 
> En een soort van help tekst, van als er helemaal geen parameter
> achter het bash script staat, is ook handig voor het gebruik, denk
> ik. Heb jij zoiets al eens gemaakt?

Soms kan een idee, om één en ander op te delen in functies, ook
gewoon best in schoonheid sterven. Dat het een oplossing onnodig
ingewikkeld maakt. Dat je zoiets als # cd meermaals gaat aanroepen. En
het zelfde geldt eigenlijk voor # apt-get. En nog een paar.

Ik ben er gewoon nog niet helemaal uit. Weet je wat, ik slaap er nog
een nachtje over.

De source van het bash script zit in de bijlage.

Met vriendelijke groet,


Frans van Berckel
------------- volgend deel ------------
#
##!/bin/bash ##
#

#
## Building an oldstable Debian kernel packages,
## which is no longer available in unstable
#
## Copyright (c) $year Frans van Berckel
#

major=3.16
minor=3.16.51-3
arch=$(uname -i)

## Install necessary packages
apt-get update
apt-get --no-install-recommends install kernel-package fakeroot -y

## Download oldstable, install, extract sources
download(){
if ! [ -x "$(command -v wget)" ]; then
  echo 'Error: wget is not installed.' >&2
  apt-get install wget -y
fi
mkdir -p /usr/src
cd /usr/src
wget -c https://deb.debian.org/debian/pool/main/l/linux/linux-source-${major}_${minor}_all.deb
dpkg -i linux-source-${major}_${manor}_all.deb
tar xjvf linux-source-${major}.tar.bz2
}

config(){
if ! [ -x "$(command -v xzcat)" ]; then
  echo 'Error: xzcat is not installed.' >&2
  apt-get install xz-utils -y
fi
cd /usr/src/linux-source-${major}
xzcat ../linux-config-${major}/config.${arch}_none_${arch}.xz >> ./.config
## Generate config with default from the ARCH supplied defconfig file
make ARCH=${arch} defconfig
}

menuconfig(){
## Generate by an ncurses-based pseudo-graphical menu
apt-get install libncurses-dev -y
cd /usr/src/linux-source-${major}
make menuconfig
## Load alternative config file - .config
## Edit config and save
}

makepkg(){
#Build the kernel packages
if ! [ -x "$(command -v nproc)" ]; then
  echo 'Error: nproc is not installed.' >&2
  apt-get install coreutils -y
fi
cd /usr/src/linux-source-${major}
make-kpkg clean
make-kpkg --rootcmd fakeroot --jobs $(`nproc`) --initrd kernel_image kernel_headers
}

##Install the new kernel
#cd /usr/src
#Check file names before running dpkg
#dpkg -i linux-image-${major}_${minor}_${arch}.deb
#dpkg -i linux-headers-${major}_${minor}_${arch}.deb


Meer informatie over de Linux maillijst