问题标签 [wildcard-expansion]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
linux - lsblk -n -o NAME,SIZE,TYPE /dev/sd* 2>/dev/null 适用于 cmd 行,不在脚本文件中
我正在编写一个脚本来检测和格式化 Raspberry Pi 的 USB 驱动器。我让脚本完美地适用于通过 USB 适配器插入的 sd 卡。当我尝试使用 USB3 硬盘时它失败了。隔离故障表明脚本中的通配符扩展和重定向处理存在问题。
当我执行
lsblk -n -o NAME,SIZE,TYPE /dev/sd* 2>/dev/null
在根终端中,输出为空,没有任何 USB 设备,插入时为空:
当我在脚本中以这种方式运行它时:
得到的是:
我不明白如何在数组变量($drive)中只获取插入的设备及其分区。lsblk 命令的解释方式与 bash 正确扩展 sd* 并将 stderr 指向 /dev/null 的命令行调用以及它在脚本上下文中的运行方式有所不同。
我已经阅读了与不同 shell 如何解释通配符和重定向有关的类似问题,但这仅涉及 bash。
我能想出的唯一解决方法是创建临时文件,这既不优雅也不吸引人:
bash - 将回显中的通配符扩展到文件
假设我在 Bash 中有以下内容:
当我检查文件的内容时,.env
路径仍然包含通配符。假设只有一个匹配项,如何确保通配符扩展为路径,以便回显时文件中不存在通配符?
merge - 使用通配符生成多个文件,然后合并为一个
我的 Snakefile 有两条规则:一条使用通配符生成多组文件,另一条将所有内容合并到一个文件中。我是这样写的:
不幸的是,这不允许我跟踪从第一条规则到第二条规则的文件:
我可以使用什么来生成带有通配符的 22 组文件chr
,generate
但能够在输入中跟踪它们merge
?预先感谢您的帮助