我在用信息文本填充WM栏时遇到了一个有趣的问题,该信息文本是通过设置根窗口的标题来应用的,即 xsetroot -name "clever words"
为此,在终端机上打印一笔财富可以正常工作:
fortune -s | while read -r; do xsetroot -name "$REPLY"; done
但是,从shell脚本运行时,同样会失败:
#!/bin/sh
cat /tmp/afile | while read; do echo "$REPLY"; done
产生:
$ sh afilereader
afilereader:2:读取:arg计数
当然,可以通过将我们的财富结果分配给一个变量,然后将xsetroot与所述变量一起使用来补救。但是我仍然想了解为什么这在脚本中不起作用。
我意识到管道两侧的每个命令都在其自己的子外壳中运行,但是看不到它们的局部变量如何影响while读取循环。还是变量甚至在循环迭代之间都超出范围?
我想念什么?
更新:在sh
我以前被链接到仪表板,这是正在取得POSIX兼容的过程。使用比较古老的bash
解决了这个问题。
read
不带变量就不能调用:pubs.opengroup.org/onlinepubs/9699919799/utilities/read.html