繁体   English   中英

Bash脚本if语句具有多个条件

[英]Bash script if statement with multiple conditions

我正在尝试为一个无所事事的人偶开发环境创建一个简单的bash shell脚本配置程序,该程序检查/ tmp / puppet-modules-up-to-date是否存在并在特定时间范围内创建(准确地说是14天)。 我正在努力使用这个简单的脚本。 任何帮助表示赞赏。

#!/bin/bash

if [[ ! -f /tmp/.puppet-modules-up-to-date ]] && [[ ! (find /tmp/.puppet-modules-up-to-date -mtime -14 | grep puppet) ]]; then

    puppet_dir=/etc/puppet

    echo 'Copying Puppetfile into place'
    cp /vagrant/puppet/Puppetfile $puppet_dir

    cd $puppet_dir

    echo 'Installing puppet modules into place'
    librarian-puppet install

    echo 'Updating previously installed puppet modules'
    librarian-puppet update 

    touch /tmp/.puppet-modules-up-to-date
fi

只是给我以下错误:

==> default: /tmp/vagrant-shell: line 3: conditional binary operator expected
==> default: /tmp/vagrant-shell: line 3: expected `)'
==> default: /tmp/vagrant-shell: line 3: syntax error near `/tmp/.puppet-modules-up-to-date'
==> default: /tmp/vagrant-shell: line 3: `if [[ ! -f /tmp/.puppet-modules-up-to-date ]] && [[ ! (find /tmp/.puppet-modules-up-to-date -mtime -14 | grep puppet) ]]; then'

问题似乎在这里:

[[ ! (find /tmp/.puppet-modules-up-to-date -mtime -14 | grep puppet) ]];

由于这实际上并没有捕获find/grep输出,您可以使用$(find...)命令来完成。

但是,您可以使用grep -q更好地处理这种情况:

find /tmp/.puppet-modules-up-to-date -mtime -14 | grep -vq puppet

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM