我正在尝试编写一个简单的脚本来剪切音频文件的一段,将其设置为图像并渲染为视频。我想使用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:"< <(:))
CCD_ 1表示CCD_。所以这和写作是一样的:
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 中读取换行分隔项目的列表
所以是的,dmenu需要一些东西通过管道传输到它。