我已閱讀我找到的所有手冊和示例。我已經在sh中嘗試過並且工作過。但我仍然無法找到如何使它在我的bash文件中工作。如果在bash中廢話比較總是返回true
我剛剛驗證碼:
echo "$#"
if [ $# == 4 ]; then
#Some code 1º
else
#Some code 2º
fi
(這只是最後一次嘗試我所做的,基於Testing the number of arguments)
但我總是在我1º代碼得到錯誤的,因爲比較總是返回。然後,我說好吧,讓我們嘗試的另一面:
echo "$#"
if [ ! $# == 4 ]; then
#Some code 1º
else
#Some code 2º
fi
就否定表達式的值,如果裏面,因爲它的手動我之前說的在完成了。沒有什麼,它仍然輸入1º代碼。
我不知道還有什麼我可以嘗試,試圖不已:
"$#" == "4"
"$#" -eq "4"
$# -gt 4
而一些基於說明書我讀過。
任何人都可以解釋我做錯了什麼?
謝謝你這麼多
PS:反正有代碼:
#!/bin/bash
function backup()
{
#Some code
echo "$#"
if [ $# -eq 4 ]; then
rootpath=${1}
uvus=${2}
title=${3}
file=${4}
path="${rootpath}$uvus/$title/VersionActual/"
pathbackups="${rootpath}$uvus/$title/VersionesAnteriores/"
filepath="${path}$file"
if [ -r $filepath ]; then
filesfound=(ls -1 $path | wc -l)
if [ "0" != $filesfound ] ; then
backup $pathbackups $file
fi
else
echo 'Error 2'
fi
else
echo 'Error 1'
fi
所以這個代碼總是過得內如果再因爲我運行它不帶參數($# is 0
)失敗。
如果我創建了一個分開的腳本:
#/bin/bash
if [ $# -eq 4 ]; then
echo "4 parameters"
fi
它運行良好!
更新:加入PIC關於執行一些參數
你可以看到,有appers和錯誤關於「如果」內部的線,因爲它在它進入,當它一定不。
你的實際論點是什麼?你總是提供3個參數給你的腳本? – 2015-03-08 20:05:04
我用3調用它,只是檢查一下,然後不執行代碼。 – 2015-03-08 20:10:38
如果你總是使用3個參數,爲什麼你驚訝''[$#== 3]'是真的? – 2015-03-08 20:11:42