diff --git a/packages/bsp/common/etc/update-motd.d/41-commands b/packages/bsp/common/etc/update-motd.d/41-commands index 86e17bfa6e..1c7a456e33 100755 --- a/packages/bsp/common/etc/update-motd.d/41-commands +++ b/packages/bsp/common/etc/update-motd.d/41-commands @@ -44,18 +44,16 @@ name_len=0 output=() for l in "${list[@]}" do - name=$(echo $l | cut -d"," -f1) - sudo=$(echo $l | cut -d"," -f2) - command=$(echo $l | cut -d"," -f3) - condition=$(echo $l | cut -d"," -f4) - if eval $condition 2> /dev/null && command -v $command &> /dev/null - then - # seek for maximum description lenght - if [ ${#name} -ge $name_len ]; then - name_len=${#name} + IFS=',' read -r name sudo command condition <<< "$l" + if [[ "${condition}" == "true" ]] || eval "${condition}" 2> /dev/null; then + if command -v "${command}" &> /dev/null; then + # seek for maximum description length + if [[ ${#name} -ge ${name_len} ]]; then + name_len=${#name} + fi + cmd_count=$(( cmd_count + 1 )) + output+=("${name},${sudo},${command}") fi - cmd_count=$(( cmd_count +1 )) - output+=("${name},${sudo},${command}") fi done @@ -66,10 +64,8 @@ if [[ "${cmd_count}" -gt 0 ]]; then echo "" for l in "${output[@]}" do - name=$(echo $l | cut -d"," -f1) - sudo=$(echo $l | cut -d"," -f2) - command=$(echo $l | cut -d"," -f3) - printf " \e[1;33m%-${name_len}s\e[0m %-0s: $sudo$command\n" "$name" + IFS=',' read -r name sudo command <<< "$l" + printf " \e[1;33m%-${name_len}s\e[0m %-0s: %s%s\n" "$name" "${sudo}" "${sudo}" "${command}" done echo -en "\033[0m" fi