首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用dmenu定义变量

使用dmenu定义变量
EN

Stack Overflow用户
提问于 2020-12-29 03:19:39
回答 1查看 444关注 0票数 0

我试图编写一个简单的脚本来剪切音频文件的片段,将其设置为图像并将其呈现为视频。我希望使用dmenu作为显示输入变量的提示的干净方式。所有的操作都很好,除了dmenu似乎期望一些东西被管道到它,否则脚本不工作。

下面是代码的相关部分是如何工作的

代码语言:javascript
复制
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脚本。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-12-29 14:31:38

要去掉有色空间,您可以这样做:

代码语言:javascript
复制
DURATION=$(:| dmenu -i -p "Duration:")

代码语言:javascript
复制
DURATION=$(dmenu -i -p "Duration:"< <(:))

:的意思是true。所以这和写作一样:

代码语言:javascript
复制
DURATION=$(true| dmenu -i -p "Duration:")
DURATION=$(dmenu -i -p "Duration:"< <(true))

但是,您也可以使用-n标志为相同的结果回显:

代码语言:javascript
复制
DURATION=$(echo -n ''|dmenu -i -p "Duration:")
DURATION=$(dmenu -i -p "Duration:"< <(echo -n ''))

从手册页:

...,它从stdin中读取换行符分隔项的列表。

所以是的,菜单需要用管道传送到它上。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65486928

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档