2009-10-12 71 views
3

我試圖製作一個程序,它接受一個參數,一個文件,然後在60秒後檢查文件發生了什麼。爲此,我需要將-e $1的結果存儲在變量中,然後在60秒後檢查它。我似乎無法使if表達式聽我說,我知道這是錯誤的。出於測試目的,該腳本只是立即打印出比較結果。期待這樣的工作示例,我不知道這個小程序有多少個版本。謝謝!這是明天到期的,任何幫助都非常感謝!Bash比較存儲的「布爾」值與什麼?

#!/bin/bash 
onStartup=$(test -e $1) 
if [ -e "$1" ]; then 
    unixtid1=$(date +"%s" -r "$1") #To check if the file was edited. 
    echo $unixtid1 
fi 
sleep 3 

#Here trying to be able to compare the boolean value stored in the 
#start of the script. True/False or 1 or 0? Now, both is actually printed. 
if [[ $onStartup=1 ]]; then 
    echo "Exists" 
fi 

if [[ $onStartup=0 ]]; then 
    echo "Does not exists" 
fi 

回答

5

使用$?特殊shell變量來獲取命令的結果。請記住,0的返回值表示true。這裏被修改腳本

#!/bin/bash 
test -e $1 
onStartup=$? 

if [ $onStartup -eq 0 ]; then 
unixtid1=$(date +"%s" -r "$1") #To check if the file was edited. 
echo $unixtid1 
fi 
sleep 3 

#Here trying to be able to compare the boolean value stored in the 
#start of the script. True/False or 1 or 0? 
if [[ $onStartup -eq 0 ]]; then 
echo "Exists" 
else 
echo "Does not exists" 
fi 

你的原始示例試圖將test命令的文字輸出存儲在onStartup變量。 test命令的文字輸出是一個空字符串,這就是爲什麼你沒有看到任何輸出。