我试图编写一个简单的脚本来剪切音频文件的片段,将其设置为图像并将其呈现为视频。我希望使用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脚本。
发布于 2020-12-29 14:31:38
要去掉有色空间,您可以这样做:
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 ''))从手册页:
...,它从stdin中读取换行符分隔项的列表。
所以是的,菜单需要用管道传送到它上。
https://stackoverflow.com/questions/65486928
复制相似问题