簡體   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