Проверка того, заканчивается ли строка числом, выдает "неожиданный оператор"

Просто чтобы добавить к усилиям @jan -molnar по разрешению синтаксического анализа HID, моя клавиатура имеет очень похожий rdesc, так как она также управляется чипом USB Primax (PiD 4e63):

root@Ub-RL85:~# cat /sys/kernel/debug/hid/*2/rdesc
05 01 09 06 a1 01 05 07 19 e0 29 e7 15 00 25 01 75 01 95 08 81 02 75 08 95 01 81 01 05 08 19 01 29 03 75 01 95 03 91 02 95 01 75 05 91 01 15 00 26 ff 00 19 00 2a ff 00 05 07 75 08 95 06 81 00 c0 

  INPUT[INPUT]
    Field(0)
      Application(GenericDesktop.Keyboard)
      Usage(8)
        Keyboard.00e0
        Keyboard.00e1
        Keyboard.00e2
        Keyboard.00e3
        Keyboard.00e4
        Keyboard.00e5
        Keyboard.00e6
        Keyboard.00e7
      Logical Minimum(0)
      Logical Maximum(1)
      Report Size(1)
      Report Count(8)
      Report Offset(0)
      Flags( Variable Absolute )
    Field(1)
      Application(GenericDesktop.Keyboard)
      Usage(256)
        LED.0000
        LED.NumLock
        LED.CapsLock
        LED.ScrollLock
        LED.Compose
        LED.Kana
        LED.0006
        LED.0007
        LED.0008
        LED.0009
        LED.000a
        LED.000b
        LED.000c
        LED.000d
        LED.000e
        LED.000f
        LED.0010
        LED.0011
        LED.0012
        LED.0013
        LED.0014
        LED.0015
        LED.0016
        LED.0017
        LED.0018
        LED.0019
        LED.001a
        LED.001b
        LED.001c
        LED.001d
        LED.001e
        LED.001f
        LED.0020
        LED.0021
        LED.0022
        LED.0023
        LED.0024
        LED.0025
        LED.0026
        LED.0027
        LED.0028
        LED.0029
        LED.002a
        LED.002b
        LED.002c
        LED.002d
        LED.002e
        LED.002f
        LED.0030
        LED.0031
        LED.0032
        LED.0033
        LED.0034
        LED.0035
        LED.0036
        LED.0037
        LED.0038
        LED.0039
        LED.003a
        LED.003b
        LED.003c
        LED.003d
        LED.003e
        LED.003f
        LED.0040
        LED.0041
        LED.0042
        LED.0043
        LED.0044
        LED.0045
        LED.0046
        LED.0047
        LED.0048
        LED.0049
        LED.004a
        LED.GenericIndicator
        LED.004c
        LED.004d
        LED.004e
        LED.004f
        LED.0050
        LED.0051
        LED.0052
        LED.0053
        LED.0054
        LED.0055
        LED.0056
        LED.0057
        LED.0058
        LED.0059
        LED.005a
        LED.005b
        LED.005c
        LED.005d
        LED.005e
        LED.005f
        LED.0060
        LED.0061
        LED.0062
        LED.0063
        LED.0064
        LED.0065
        LED.0066
        LED.0067
        LED.0068
        LED.0069
        LED.006a
        LED.006b
        LED.006c
        LED.006d
        LED.006e
        LED.006f
        LED.0070
        LED.0071
        LED.0072
        LED.0073
        LED.0074
        LED.0075
        LED.0076
        LED.0077
        LED.0078
        LED.0079
        LED.007a
        LED.007b
        LED.007c
        LED.007d
        LED.007e
        LED.007f
        LED.0080
        LED.0081
        LED.0082
        LED.0083
        LED.0084
        LED.0085
        LED.0086
        LED.0087
        LED.0088
        LED.0089
        LED.008a
        LED.008b
        LED.008c
        LED.008d
        LED.008e
        LED.008f
        LED.0090
        LED.0091
        LED.0092
        LED.0093
        LED.0094
        LED.0095
        LED.0096
        LED.0097
        LED.0098
        LED.0099
        LED.009a
        LED.009b
        LED.009c
        LED.009d
        LED.009e
        LED.009f
        LED.00a0
        LED.00a1
        LED.00a2
        LED.00a3
        LED.00a4
        LED.00a5
        LED.00a6
        LED.00a7
        LED.00a8
        LED.00a9
        LED.00aa
        LED.00ab
        LED.00ac
        LED.00ad
        LED.00ae
        LED.00af
        LED.00b0
        LED.00b1
        LED.00b2
        LED.00b3
        LED.00b4
        LED.00b5
        LED.00b6
        LED.00b7
        LED.00b8
        LED.00b9
        LED.00ba
        LED.00bb
        LED.00bc
        LED.00bd
        LED.00be
        LED.00bf
        LED.00c0
        LED.00c1
        LED.00c2
        LED.00c3
        LED.00c4
        LED.00c5
        LED.00c6
        LED.00c7
        LED.00c8
        LED.00c9
        LED.00ca
        LED.00cb
        LED.00cc
        LED.00cd
        LED.00ce
        LED.00cf
        LED.00d0
        LED.00d1
        LED.00d2
        LED.00d3
        LED.00d4
        LED.00d5
        LED.00d6
        LED.00d7
        LED.00d8
        LED.00d9
        LED.00da
        LED.00db
        LED.00dc
        LED.00dd
        LED.00de
        LED.00df
        LED.00e0
        LED.00e1
        LED.00e2
        LED.00e3
        LED.00e4
        LED.00e5
        LED.00e6
        LED.00e7
        LED.00e8
        LED.00e9
        LED.00ea
        LED.00eb
        LED.00ec
        LED.00ed
        LED.00ee
        LED.00ef
        LED.00f0
        LED.00f1
        LED.00f2
        LED.00f3
        LED.00f4
        LED.00f5
        LED.00f6
        LED.00f7
        LED.00f8
        LED.00f9
        LED.00fa
        LED.00fb
        LED.00fc
        LED.00fd
        LED.00fe
        LED.00ff
      Logical Minimum(0)
      Logical Maximum(255)
      Report Size(8)
      Report Count(6)
      Report Offset(16)
      Flags( Array Absolute )
  OUTPUT[OUTPUT]
    Field(0)
      Application(GenericDesktop.Keyboard)
      Usage(3)
        LED.NumLock
        LED.CapsLock
        LED.ScrollLock
      Logical Minimum(0)
      Logical Maximum(1)
      Report Size(1)
      Report Count(3)
      Report Offset(0)
      Flags( Variable Absolute )

Keyboard.00e0 ---> Key.LeftControl
Keyboard.00e1 ---> Key.LeftShift
Keyboard.00e2 ---> Key.LeftAlt
Keyboard.00e3 ---> Key.LeftMeta
Keyboard.00e4 ---> Key.RightCtrl
Keyboard.00e5 ---> Key.RightShift
Keyboard.00e6 ---> Key.RightAlt
Keyboard.00e7 ---> Key.RightMeta
LED.0000 ---> Sync.Report
LED.NumLock ---> LED.NumLock
LED.CapsLock ---> LED.CapsLock
LED.ScrollLock ---> LED.ScrollLock
LED.Compose ---> LED.Compose
LED.Kana ---> LED.Kana
LED.0006 ---> Sync.Report
LED.0007 ---> Sync.Report
LED.0008 ---> Sync.Report
LED.0009 ---> LED.Mute
LED.000a ---> Sync.Report
LED.000b ---> Sync.Report
LED.000c ---> Sync.Report
LED.000d ---> Sync.Report
LED.000e ---> Sync.Report
LED.000f ---> Sync.Report
LED.0010 ---> Sync.Report
LED.0011 ---> Sync.Report
LED.0012 ---> Sync.Report
LED.0013 ---> Sync.Report
LED.0014 ---> Sync.Report
LED.0015 ---> Sync.Report
LED.0016 ---> Sync.Report
LED.0017 ---> Sync.Report
LED.0018 ---> Sync.Report
LED.0019 ---> LED.?
LED.001a ---> Sync.Report
LED.001b ---> Sync.Report
LED.001c ---> Sync.Report
LED.001d ---> Sync.Report
LED.001e ---> Sync.Report
LED.001f ---> Sync.Report
LED.0020 ---> Sync.Report
LED.0021 ---> Sync.Report
LED.0022 ---> Sync.Report
LED.0023 ---> Sync.Report
LED.0024 ---> Sync.Report
LED.0025 ---> Sync.Report
LED.0026 ---> Sync.Report
LED.0027 ---> LED.Sleep
LED.0028 ---> Sync.Report
LED.0029 ---> Sync.Report
LED.002a ---> Sync.Report
LED.002b ---> Sync.Report
LED.002c ---> Sync.Report
LED.002d ---> Sync.Report
LED.002e ---> Sync.Report
LED.002f ---> Sync.Report
LED.0030 ---> Sync.Report
LED.0031 ---> Sync.Report
LED.0032 ---> Sync.Report
LED.0033 ---> Sync.Report
LED.0034 ---> Sync.Report
LED.0035 ---> Sync.Report
LED.0036 ---> Sync.Report
LED.0037 ---> Sync.Report
LED.0038 ---> Sync.Report
LED.0039 ---> Sync.Report
LED.003a ---> Sync.Report
LED.003b ---> Sync.Report
LED.003c ---> Sync.Report
LED.003d ---> Sync.Report
LED.003e ---> Sync.Report
LED.003f ---> Sync.Report
LED.0040 ---> Sync.Report
LED.0041 ---> Sync.Report
LED.0042 ---> Sync.Report
LED.0043 ---> Sync.Report
LED.0044 ---> Sync.Report
LED.0045 ---> Sync.Report
LED.0046 ---> Sync.Report
LED.0047 ---> Sync.Report
LED.0048 ---> Sync.Report
LED.0049 ---> Sync.Report
LED.004a ---> Sync.Report
LED.GenericIndicator ---> LED.Misc
LED.004c ---> LED.Suspend
LED.004d ---> LED.?
LED.004e ---> Sync.Report
LED.004f ---> Sync.Report
LED.0050 ---> Sync.Report
LED.0051 ---> Sync.Report
LED.0052 ---> Sync.Report
LED.0053 ---> Sync.Report
LED.0054 ---> Sync.Report
LED.0055 ---> Sync.Report
LED.0056 ---> Sync.Report
LED.0057 ---> Sync.Report
LED.0058 ---> Sync.Report
LED.0059 ---> Sync.Report
LED.005a ---> Sync.Report
LED.005b ---> Sync.Report
LED.005c ---> Sync.Report
LED.005d ---> Sync.Report
LED.005e ---> Sync.Report
LED.005f ---> Sync.Report
LED.0060 ---> Sync.Report
LED.0061 ---> Sync.Report
LED.0062 ---> Sync.Report
LED.0063 ---> Sync.Report
LED.0064 ---> Sync.Report
LED.0065 ---> Sync.Report
LED.0066 ---> Sync.Report
LED.0067 ---> Sync.Report
LED.0068 ---> Sync.Report
LED.0069 ---> Sync.Report
LED.006a ---> Sync.Report
LED.006b ---> Sync.Report
LED.006c ---> Sync.Report
LED.006d ---> Sync.Report
LED.006e ---> Sync.Report
LED.006f ---> Sync.Report
LED.0070 ---> Sync.Report
LED.0071 ---> Sync.Report
LED.0072 ---> Sync.Report
LED.0073 ---> Sync.Report
LED.0074 ---> Sync.Report
LED.0075 ---> Sync.Report
LED.0076 ---> Sync.Report
LED.0077 ---> Sync.Report
LED.0078 ---> Sync.Report
LED.0079 ---> Sync.Report
LED.007a ---> Sync.Report
LED.007b ---> Sync.Report
LED.007c ---> Sync.Report
LED.007d ---> Sync.Report
LED.007e ---> Sync.Report
LED.007f ---> Sync.Report
LED.0080 ---> Sync.Report
LED.0081 ---> Sync.Report
LED.0082 ---> Sync.Report
LED.0083 ---> Sync.Report
LED.0084 ---> Sync.Report
LED.0085 ---> Sync.Report
LED.0086 ---> Sync.Report
LED.0087 ---> Sync.Report
LED.0088 ---> Sync.Report
LED.0089 ---> Sync.Report
LED.008a ---> Sync.Report
LED.008b ---> Sync.Report
LED.008c ---> Sync.Report
LED.008d ---> Sync.Report
LED.008e ---> Sync.Report
LED.008f ---> Sync.Report
LED.0090 ---> Sync.Report
LED.0091 ---> Sync.Report
LED.0092 ---> Sync.Report
LED.0093 ---> Sync.Report
LED.0094 ---> Sync.Report
LED.0095 ---> Sync.Report
LED.0096 ---> Sync.Report
LED.0097 ---> Sync.Report
LED.0098 ---> Sync.Report
LED.0099 ---> Sync.Report
LED.009a ---> Sync.Report
LED.009b ---> Sync.Report
LED.009c ---> Sync.Report
LED.009d ---> Sync.Report
LED.009e ---> Sync.Report
LED.009f ---> Sync.Report
LED.00a0 ---> Sync.Report
LED.00a1 ---> Sync.Report
LED.00a2 ---> Sync.Report
LED.00a3 ---> Sync.Report
LED.00a4 ---> Sync.Report
LED.00a5 ---> Sync.Report
LED.00a6 ---> Sync.Report
LED.00a7 ---> Sync.Report
LED.00a8 ---> Sync.Report
LED.00a9 ---> Sync.Report
LED.00aa ---> Sync.Report
LED.00ab ---> Sync.Report
LED.00ac ---> Sync.Report
LED.00ad ---> Sync.Report
LED.00ae ---> Sync.Report
LED.00af ---> Sync.Report
LED.00b0 ---> Sync.Report
LED.00b1 ---> Sync.Report
LED.00b2 ---> Sync.Report
LED.00b3 ---> Sync.Report
LED.00b4 ---> Sync.Report
LED.00b5 ---> Sync.Report
LED.00b6 ---> Sync.Report
LED.00b7 ---> Sync.Report
LED.00b8 ---> Sync.Report
LED.00b9 ---> Sync.Report
LED.00ba ---> Sync.Report
LED.00bb ---> Sync.Report
LED.00bc ---> Sync.Report
LED.00bd ---> Sync.Report
LED.00be ---> Sync.Report
LED.00bf ---> Sync.Report
LED.00c0 ---> Sync.Report
LED.00c1 ---> Sync.Report
LED.00c2 ---> Sync.Report
LED.00c3 ---> Sync.Report
LED.00c4 ---> Sync.Report
LED.00c5 ---> Sync.Report
LED.00c6 ---> Sync.Report
LED.00c7 ---> Sync.Report
LED.00c8 ---> Sync.Report
LED.00c9 ---> Sync.Report
LED.00ca ---> Sync.Report
LED.00cb ---> Sync.Report
LED.00cc ---> Sync.Report
LED.00cd ---> Sync.Report
LED.00ce ---> Sync.Report
LED.00cf ---> Sync.Report
LED.00d0 ---> Sync.Report
LED.00d1 ---> Sync.Report
LED.00d2 ---> Sync.Report
LED.00d3 ---> Sync.Report
LED.00d4 ---> Sync.Report
LED.00d5 ---> Sync.Report
LED.00d6 ---> Sync.Report
LED.00d7 ---> Sync.Report
LED.00d8 ---> Sync.Report
LED.00d9 ---> Sync.Report
LED.00da ---> Sync.Report
LED.00db ---> Sync.Report
LED.00dc ---> Sync.Report
LED.00dd ---> Sync.Report
LED.00de ---> Sync.Report
LED.00df ---> Sync.Report
LED.00e0 ---> Sync.Report
LED.00e1 ---> Sync.Report
LED.00e2 ---> Sync.Report
LED.00e3 ---> Sync.Report
LED.00e4 ---> Sync.Report
LED.00e5 ---> Sync.Report
LED.00e6 ---> Sync.Report
LED.00e7 ---> Sync.Report
LED.00e8 ---> Sync.Report
LED.00e9 ---> Sync.Report
LED.00ea ---> Sync.Report
LED.00eb ---> Sync.Report
LED.00ec ---> Sync.Report
LED.00ed ---> Sync.Report
LED.00ee ---> Sync.Report
LED.00ef ---> Sync.Report
LED.00f0 ---> Sync.Report
LED.00f1 ---> Sync.Report
LED.00f2 ---> Sync.Report
LED.00f3 ---> Sync.Report
LED.00f4 ---> Sync.Report
LED.00f5 ---> Sync.Report
LED.00f6 ---> Sync.Report
LED.00f7 ---> Sync.Report
LED.00f8 ---> Sync.Report
LED.00f9 ---> Sync.Report
LED.00fa ---> Sync.Report
LED.00fb ---> Sync.Report
LED.00fc ---> Sync.Report
LED.00fd ---> Sync.Report
LED.00fe ---> Sync.Report
LED.00ff ---> Sync.Report
LED.NumLock ---> LED.?
LED.CapsLock ---> LED.?
LED.ScrollLock ---> LED.?

Я спросил здесь

Не думайте, что «водитель» Ива Трюдо — это ответ. Я готов помочь.

1
09.09.2019, 00:42
2 ответа

Оператор сопоставления регулярных выражений =~не поддерживается в одинарных квадратных скобках. Вам нужны двойные квадратные скобки, чтобы это работало.

[[ $name =~ ^.[0-9]$ ]]

Обратите внимание, что вам не нужно регулярное выражение, вы можете использовать обычный шаблон:

[[ $name = *[0-9] ]]

или, если вам нужно, чтобы имя содержало что-то перед цифрой,

[[ $name = *?[0-9] ]]
6
27.01.2020, 23:15

[ := ~:ожидается бинарный оператор

ошибка [$name =~ ^.[0-9]$ ]заключить его с [],

попробуй,

#!/bin/sh
name=$(basename "$0".sh)
[[ $name =~ ^.[0-9]$ ]] && numb=$(echo $name | sed 's/[^0-9]*//g') || numb=1
echo $num

и это работает.

1
27.01.2020, 23:15

Теги

Похожие вопросы