如何从ls输出中检索文件名

时间:2019-05-08 17:57:35

标签: bash

我正在尝试自动在macOS上为avrdude选择USB接口。我想选择ls /dev/tty.usb*的第一个输出。

我正在尝试自动化this

但是,我似乎无法cut正常工作,不幸的是,针对类似问题的其他解决方案对于我来说,太抽象了,太复杂了。看来awksed是正确的方法,但我对这两种方法都不熟悉。

例如,我想从运行中获得/dev/tty.usbmodem002021332

$ ls /dev/tty.usb*
/dev/tty.usbmodem002021332  /dev/tty.usbmodem002021334  /dev/tty.usbserial-DAYO5CGB

1 个答案:

答案 0 :(得分:5)

您在输出ls上的努力就是为什么在shell脚本中依赖ls从来不是一个好主意的例子。为了获取与模式/dev/tty.usb*匹配的文件列表,另一种方法是将glob表达式的结果分配给数组:

#!/bin/bash
shopt -s nullglob
list=(/dev/tty.usb*)

...然后获取其第一个元素:

echo "${list[0]}"

有关ls为何存在问题的更多信息,请参见https://mywiki.wooledge.org/ParsingLs