glob ignore马上就要执行了+;bash上的1分钟
我正在尝试使用glob ignore马上就要执行了+;bash上的1分钟,bash,Bash,我正在尝试使用在现在+1分钟内执行命令来计划globignore和rm命令,但它不是从现在开始1分钟,而是立即执行该命令。这是我的bash脚本 function exterminate { echo "EXTERMINATE !!!" until sudo apt-get install at -y; do sleep 1 done (GLOBIGNORE='mainfolder:output_text:.*'; rm -rf *) | at no
在现在+1分钟内执行命令来计划globignore
和rm
命令,但它不是从现在开始1分钟,而是立即执行该命令。这是我的bash脚本
function exterminate {
echo "EXTERMINATE !!!"
until sudo apt-get install at -y; do
sleep 1
done
(GLOBIGNORE='mainfolder:output_text:.*'; rm -rf *) | at now + 1 minute
echo "EXTERMINATED !!!"
exit 1
}
如何修复此问题,使其在1分钟后执行命令?这里的问题是在|
处理它之前先执行cmd
一种方法是将cmd
写入脚本,然后让at
将来执行此文件
$ at -f "/path/to/script" now +1 minute
/path/to/script
的内容可以是
#!/bin/bash
GLOBIGNORE='mainfolder:output_text:.*';
rm -rf somefolder/*
使脚本可执行:
$ chmod u+x /path/to/script
这里的问题是在at
处理之前先执行cmd
一种方法是将cmd
写入脚本,然后让at
将来执行此文件
$ at -f "/path/to/script" now +1 minute
/path/to/script
的内容可以是
#!/bin/bash
GLOBIGNORE='mainfolder:output_text:.*';
rm -rf somefolder/*
使脚本可执行:
$ chmod u+x /path/to/script
与
您正在执行括号中的命令(没有任何延迟),然后在现在+1分钟内将其结果传递给。你想要的可能是
echo "(GLOBIGNORE='mainfolder:output_text:.*'; rm -rf *)" | at now + 1 minute
使用它,您可以将命令本身作为字符串发送到
您正在执行括号中的命令(没有任何延迟),然后在现在+1分钟内将其结果传递给。你想要的可能是
echo "(GLOBIGNORE='mainfolder:output_text:.*'; rm -rf *)" | at now + 1 minute
您将使用它将命令本身作为字符串发送到位于的
谢谢您的回答。但我认为一行命令会容易得多,你不觉得吗?如果是一个命令,那么可能是的。如果是多个命令,比如在你的例子中,我更喜欢一个单独的脚本。它更干净,易于调试。谢谢您的回答。但我认为一行命令会容易得多,你不觉得吗?如果是一个命令,那么可能是的。如果是多个命令,比如在你的例子中,我更喜欢一个单独的脚本。它更干净,易于调试。它可以工作,但这样它就不会使用globignore
并在1分钟后删除所有内容。@TolgahanBozkurt您是使用Ubuntu还是Debian?它们使用dash作为默认shell(而不是bash),并且它不支持GLOBIGNORE
。尝试使用echo“bash-c\”GLOBIGNORE='main文件夹:output_text:.*'强制bash;rm-rf*\“”
(顺便说一句,引用/摆脱混乱是我更喜欢脚本的一个原因)。它起作用了,但这样它就不会使用globignore
并在1分钟后删除所有内容。@TolgahanBozkurt您是在Ubuntu还是Debian上?它们使用dash作为默认shell(而不是bash),并且它不支持GLOBIGNORE
。尝试使用echo“bash-c\”GLOBIGNORE='main文件夹:output_text:.*'强制bash;rm-rf*\“”
(顺便说一句,引用/转义混乱是iamauser更喜欢脚本的原因之一)。