运行 linux 命令基于目录中的现有文件

Run linux command based on existing file in a directory

/dev/usb 目录中,有时我有 lp0,有时 lp1。如何更改以下命令以更改 --name 基于 /dev/usb 的内容? IE。如果我在 /dev/usb 目录中有 lp0,我会得到:

TEST=`udevadm info --attribute-walk --name=/dev/usb/lp0 | grep "serial}==\"VL" | sed -n -e 's/^.*serial}==\"VL//p' | sed 's/\"//g'`

如果/dev/usb/目录下有lp1:

TEST=`udevadm info --attribute-walk --name=/dev/usb/lp1 | grep "serial}==\"VL" | sed -n -e 's/^.*serial}==\"VL//p' | sed 's/\"//g'`

如何将/dev/usb的内容保存在一个变量(lp0或lp1)中,然后在上面的命令中使用它?

您可以按如下方式测试 lpX 设备的可读性:

 if test -r /dev/usb/lp0; then
    NAME=/dev/usb/lp0
 elif test -r /dev/usb/lp1; then
    NAME=/dev/usb/lp1
 else
    printf '%s\n' "could not find lp0 or lp1" >&2
    exit 1
 fi
 TEST=$(udevadm info --attribute-walk --name=$NAME ...)

你可以这样写:

lp=( /dev/usb/lp? )
TEST=$( udevadm info --attribute-walk --name=${f[0]} ... )

? 通配符匹配任意 1 个字符。