Kodunuzu kesip bir dosyaya yapıştırabildim ve düzgün çalıştı. Bunu böyle yürütürseniz, çalışmalıdır:
"File.sh" dosyanız:
#!/bin/bash
if [ $# -lt 3 -o $# -gt 3 ]; then
echo "Error... Usage: $0 host database username"
exit 0
fi
Komuta:
$ ./file.sh arg1 arg2 arg3
"File.sh" dosyasının çalıştırılabilir olması gerektiğini unutmayın:
$ chmod +x file.sh
Nasıl girdi yaptığınıza dair bu hatayı alıyor olabilirsiniz (boru, havuç vb.). Koşulu ikiye bölmeyi de deneyebilirsiniz:
if [ $# -lt 3 ] || [ $# -gt 3 ]; then
echo "Error... Usage: $0 host database username"
exit 0
fi
Veya bash
kullandığınız için yerleşik sözdizimini kullanabilirsiniz:
if [[ $# -lt 3 || $# -gt 3 ]]; then
echo "Error... Usage: $0 host database username"
exit 0
fi
Ve son olarak, elbette sadece 3 argüman verilip verilmediğini kontrol edebilirsiniz (temiz, POSIX kabuk uyumluluğunu korur):
if [ $# -ne 3 ]; then
echo "Error... Usage: $0 host database username"
exit 0
fi