#!/bin/ksh93 # # simple /proc/cmdline parser # function read_proc_cmdline { nameref a=$1 typeset IFS=$' \t' ar=( $(cat /proc/cmdline) ) return 0 } # # variables # compound c=( compound -A values ) typeset -a ar function parse_kernel_cmdline { typeset s typeset dummy nameref in_ar=$1 nameref out_values=$2 for s in "${in_ar[@]}" ; do dummy=${s/~(Elr)(.+?)(?:=(.+)|)/} print -v .sh.match case "${#.sh.match[*]}" in '2') out_values[${.sh.match[1]}].name="${.sh.match[1]}" ;; '3') out_values[${.sh.match[1]}].name="${.sh.match[1]}" out_values[${.sh.match[1]}].value="${.sh.match[2]}" ;; *) print -u2 -f $"%s: Parser error\n" "$0" return 1 ;; esac done return 0 } # # main # read_proc_cmdline ar parse_kernel_cmdline ar c.values print -v c # EOF.