我已阅读我找到的所有手册和示例。我已经在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