bash - 使用 dmenu 定义变量
问题描述
我正在尝试编写一个简单的脚本来剪切一段音频文件,将其设置为图像并将其渲染为视频。我想使用 dmenu 作为一种简洁的方式来显示输入变量的提示。一切正常,除了似乎 dmenu 期望将某些内容输入其中,否则脚本将不起作用。
这是我当前工作的代码的相关部分的方式
INPUT=$(ls | dmenu -i -p "Input file:")
START=$(echo " " | dmenu -i -p "Start time:")
DURATION=$(echo " " | dmenu -i -p "Duration:")
IMAGE=$(ls | dmenu -i -p "Image file:")
我想删除 $START 和 $DURATION 的 echo 命令,因为它很丑(它在 dmenu 中留下了一个不需要的彩色空间),而且它看起来是多余的。但是,如果没有它,脚本会在这些行上失败。
dmenu 是否总是希望将某些内容输入其中?也许我在做其他完全错误的事情,这只是我的第三个 shell 脚本。
解决方案
要摆脱彩色空间,您可以这样做:
DURATION=$(:| dmenu -i -p "Duration:")
或者
DURATION=$(dmenu -i -p "Duration:"< <(:))
:
意味着true
。所以和写法一样:
DURATION=$(true| dmenu -i -p "Duration:")
DURATION=$(dmenu -i -p "Duration:"< <(true))
但是您也可以使用该-n
标志来回显相同的结果:
DURATION=$(echo -n ''|dmenu -i -p "Duration:")
DURATION=$(dmenu -i -p "Duration:"< <(echo -n ''))
从手册页:
...从标准输入读取换行符分隔的项目列表
所以是的,dmenu 需要通过管道传输的东西。
推荐阅读
- spring-boot - 在循环的情况下不返回 Junit Mock 响应
- php - 如何使用文件配置 .env 包含数据库登录以连接到 mysqli?
- python - if语句中如何调用类的方法?
- java - JPA/Hibernate5:如何替换用@OneToOne 和@MapsId 映射的子对象?
- python - 统计每月未结案件的数量
- flutter - Flutter - RaisedButton onPressed 有多个条件
- plsql - 从参考游标返回值到客户端
- react-native-android - 在 react-native 中在设备的日历中添加事件
- java - 可以同时读取和写入 TreeMap 导致无限循环
- r - 无法使用 Read10X 读取矩阵文件