Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/bash/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
glob ignore马上就要执行了+;bash上的1分钟_Bash - Fatal编程技术网

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更喜欢脚本的原因之一)。