谷歌搜索了很多,并且毫不奇怪,找到了一个有效的解决方案。我是工程师,而不是程序员。只需要这个工具。
所以:我有一个文件" test2.dat"每当它发生变化时我都想要grep。
我没有inotifywait或更改或任何类似的东西安装,我没有权利这样做(甚至不想,因为我希望这个脚本普遍工作)。
有什么建议吗?
What I tried:
LTIME='stat -c %Z test2.dat'
while true
do
ATIME='stat -c %Z test2.dat'
if [[ "$ATIME" != "$LTIME" ]]
then
grep -i "15 RT" test2.dat > test_grep2.txt
LTIME=$ATIME
fi
sleep 5
done
但基本上什么也没做。
答案 0 :(得分:1)
您的命令替换语法错误。如果您希望命令在引号内运行,那么您错了。 bash中的command-substitution语法是$(cmd)
同样通过[[ "$ATIME" != "$LTIME" ]]
进行文字字符串比较,永远不会工作。存储LTIME=$ATIME
后,字符串的后续比较永远不会正确。
脚本的相应语法应该是,
#!/bin/bash
LTIME=$(stat -c %Z test2.dat)
while true
do
ATIME=$(stat -c %Z test2.dat)
if [[ "$ATIME" != "$LTIME" ]]
then
grep -i "15 RT" test2.dat > test_grep2.txt
LTIME="$ATIME"
fi
sleep 5
done
我建议在bash
中使用小写字母作为变量定义,只需在上面的示例中重复使用您的模板。