I read this line of script in book [linux device drivers]. What does it do?
major=$(awk "\\$2= =\"$module\" {print \\$1}" /proc/devices)
as in context:
#!/bin/sh
module="scull"
device="scull"
mode="664"
# invoke insmod with all arguments we got
# and use a pathname, as newer modutils don't look in . by default
/sbin/insmod ./$module.ko $* || exit 1
# remove stale nodes
rm -f /dev/${device}[0-3]
major=$(awk "\\$2= =\"$module\" {print \\$1}" /proc/devices)
mknod /dev/${device}0 c $major 0
....
I read this too but that line was not working for me. I had to modify it to
The first part
\$2 == \"$module\"is the pattern. When this is satisfied, that is, the second column is equal to “scull”, the commandprint \$1is executed which prints the first column. This value is stored in the variable major.The
$needs to be escaped as they need to be passed as it is to awk.