From 8a0bbe21d40c3d7382a18b2a0331af89fc6a2158 Mon Sep 17 00:00:00 2001 From: Marcos Del Sol Vives Date: Sat, 10 Oct 2020 03:17:14 +0200 Subject: [PATCH] Replace awk with sed for WSL The WSL distribution of Debian uses mawk instead of gawk by default, which does not support matching into an array as it is currently being done for extracting the COM port from the device name. This commit replaces awk by sed, which also simplifies the building of /dev/ttySx paths. --- pm3 | 13 +++---------- 1 file changed, 3 insertions(+), 10 deletions(-) diff --git a/pm3 b/pm3 index 429dfaba6..bb0ac2455 100755 --- a/pm3 +++ b/pm3 @@ -156,10 +156,7 @@ function get_pm3_list_WSL { # Need to look for this first, the call to Win32_serialport "crashes" then native bt serial port. Don't ask why. #BT direct SERIAL PORTS (COM) if $FINDBTRFCOMM; then - for DEV in $(powershell.exe -command "Get-CimInstance -ClassName Win32_PnPEntity | Where-Object Caption -like 'Standard Serial over Bluetooth link (COM*' | Select Name" 2> /dev/null | awk 'match($0,/COM([0-9]+)/,m){print m[1]}'); do - - DEV=${DEV/ */} - DEV="/dev/ttyS${DEV#COM}" + for DEV in $(powershell.exe -command "Get-CimInstance -ClassName Win32_PnPEntity | Where-Object Caption -like 'Standard Serial over Bluetooth link (COM*' | Select Name" 2> /dev/null | sed -nr 's#.*\bCOM([0-9]+)\b.*#/dev/ttyS\1#p'); do # ttyS counterpart takes some more time to appear if [ -e "$DEV" ]; then PM3LIST+=("$DEV") @@ -176,9 +173,7 @@ function get_pm3_list_WSL { fi # Normal SERIAL PORTS (COM) - for DEV in $(powershell.exe -command "Get-CimInstance -ClassName Win32_serialport | Where-Object PNPDeviceID -like '*VID_9AC4&PID_4B8F*' | Select DeviceID" 2>/dev/null | awk '/^COM/{print $1}'); do - DEV=${DEV/ */} - DEV="/dev/ttyS${DEV#COM}" + for DEV in $(powershell.exe -command "Get-CimInstance -ClassName Win32_serialport | Where-Object PNPDeviceID -like '*VID_9AC4&PID_4B8F*' | Select DeviceID" 2>/dev/null | sed -nr 's#^COM([0-9]+)\b#/dev/ttyS\1#p'); do # ttyS counterpart takes some more time to appear if [ -e "$DEV" ]; then PM3LIST+=("$DEV") @@ -194,9 +189,7 @@ function get_pm3_list_WSL { #white BT dongle SERIAL PORTS (COM) if $FINDBTDONGLE; then - for DEV in $(powershell.exe -command "Get-CimInstance -ClassName Win32_serialport | Where-Object PNPDeviceID -like '*VID_10C4&PID_EA60*' | Select DeviceID" 2>/dev/null | awk '/^COM/{print $1}'); do - DEV=${DEV/ */} - DEV="/dev/ttyS${DEV#COM}" + for DEV in $(powershell.exe -command "Get-CimInstance -ClassName Win32_serialport | Where-Object PNPDeviceID -like '*VID_10C4&PID_EA60*' | Select DeviceID" 2>/dev/null | sed -nr 's#^COM([0-9]+)\b#/dev/ttyS\1#p'); do # ttyS counterpart takes some more time to appear if [ -e "$DEV" ]; then PM3LIST+=("$DEV")