continue
fi
- # Skip lines without a =
- if ! [[ ${line} =~ [^=]*=[^=]*$ ]]; then
+ # Check for a valid key followed by =
+ if ! [[ ${line} =~ ^[A-Za-z_][A-Za-z0-9_]*= ]]; then
echo "Invalid line '${line}'" >&2
continue
fi
- local key="${line%=*}"
+ local key="${line%%=*}"
local val="${line#*=}"
- # Skip lines with an invalid key
- if ! [[ ${key} =~ ^[A-Za-z_][A-Za-z0-9_]*$ ]]; then
- echo "Invalid key '${key}'" >&2
- continue
- fi
-
# Skip lines with invalid values
if ! [[ ${val} =~ ^[\'][\ A-Za-z0-9=/,.:%_@#+-]*[\']$ ]] && ! [[ ${val} =~ ^[A-Za-z0-9=/,.:%_@#+-]*$ ]]; then
echo "Invalid value '${val}' for key '${key}'" >&2
Invalid value 'gree!n0' for key 'GREEN_DEV'
Invalid value '00:c0:08:8a :a0:47' for key 'GREEN_MACADDR'
Invalid value '"r8175"' for key 'GREEN_DRIVER'
-Invalid key '-RED_DEV'
-Invalid key 'RE??D_MACADDR'
-Invalid key 'RED&&_DRIVER'
-Invalid key '0BLUE_DEV'
+Invalid line '-RED_DEV=red0'
+Invalid line 'RE??D_MACADDR=00:c0:08:8a:a0:56'
+Invalid line 'RED&&_DRIVER=r8283'
+Invalid line '0BLUE_DEV='blue0 net0''
Invalid line 'Line_without_a_equal_sign_is_also_invalid'