0

我有一个包含以下文本的文本文件 b.txt:

通知发送 -i gtk-info “你好吗” -h 字符串:x-canonical-private-synchronous:任何东西

我有一个带有以下代码的 shell 脚本:

#!/bin/sh

while true;
do if [ -s b.txt ]
then
value="$(cat b.txt)"
exec $value
sleep 0.1
fi
done

当我运行脚本时,它会引发以下错误并且不显示通知:

选项数无效。

但是当文本文件包含只有这样两个单词的命令时:

notify-send -i gtk-info "Hows You" -h string:x-canonical-private-synchronous:anything

通知显示完美。

仅当我通过 shell 脚本执行 notify-send 时才会发生此问题。如何显示带有任意字数消息的通知?

4

2 回答 2

2

exec在这里使用是完全错误的。也许试试

#!/bin/sh

while true;
do
  if [ -s ./b.txt ]
  then
    . ./b.txt
    sleep 0.1
  fi
done

但是在一个紧密的循环中运行它似乎是一件奇怪的事情,并且执行一个未知来源的文件充其量是可疑的。您确定此文本文件将始终包含您期望的内容并且不能被任何人修改吗?为什么首先将此命令放在单独的文件中?

于 2019-01-31T07:38:07.320 回答
1

尝试替换exec $valueeval $value

于 2019-01-31T07:41:10.287 回答