使用 dmenu 定义变量
using dmenu to define variables
我正在尝试编写一个简单的脚本来剪切一段音频文件,将其设置为图像并将其渲染为视频。
我想使用 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 中留下了一个不需要的 space 彩色框),也因为它看起来多余。但是,如果没有它,脚本会在这些行上失败。
dmenu 是否总是期望通过管道输入某些内容?
也许我做的其他事情完全错了,这只是我的第 3 个 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 ''))
来自手册页:
... which reads a list of newline-separated items from stdin
所以是的,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 中留下了一个不需要的 space 彩色框),也因为它看起来多余。但是,如果没有它,脚本会在这些行上失败。
dmenu 是否总是期望通过管道输入某些内容? 也许我做的其他事情完全错了,这只是我的第 3 个 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 ''))
来自手册页:
... which reads a list of newline-separated items from stdin
所以是的,dmenu 需要通过管道传输内容。