我想用来notify-osd
显示桌面通知。还应显示作为输入参数给出的值。
脚本:
param="parameter $1"
echo "${param}"
echo 'notify-send "param no value"' | at now
echo 'notify-send "${param}" "param with value"' | at now
问题:第一个通知显示正确。但是使用的通知${param}
从未显示。为什么?
(at now
稍后当然会按预定时间替换)
答案1
这是因为第二个${param}
在单引号内,这意味着当命令由 at 运行时它会被解释,而 at 没有继承该变量,因为它没有被导出。
由于此时它是一个空字符串,因此会notify-send
因错误退出,因为需要非空摘要。
你可以用export
一个变量来包含你想要使用的值,并在单引号内使用该变量来获取传入的值。或者,at
如标准输入,您可以直接转储脚本而无需进行多余的转义,如下所示:
/bin/sh #!/bin/sh 复制代码 现在 << EOF 通知发送“${param}”“带值的参数” 末梢血