改进
if is 语法不正确。if
应该有一个程序(bash内部或外部)运行,它返回一个退出代码。如果是0
则如果为真,否则为假。您可以使用grep
或任何其他实用程序,例如test
或/usr/bin/[
。但是bash有一个内置的test
和[
.
因此,如果等于 1,[ "$var" -eq 1 ]
则返回 0 $var
,如果不等于 1,则返回$var
1。
在您的情况下,我建议使用case
而不是if-then-elif-else-fi
符号。
case $x in
1) something;;
2) other;;
*) echo "Error"; exit 1;;
easc
甚至使用select
. 例子:
#!/bin/bash
PS3="Enter an option: "
select promin in "Proband" "mincount";do [ -n "$promin" ] && break; done
echo $promin
case "$promin" in
Proband) read -p "Enter the proband file name: " proband_file; echo "$proband_file";;
mincount) read -p "Enter the min count number: " mincount; echo "$mincount mincount";;
*) echo Error; exit 1;;
esac
这将打印“输入选项:”提示并等待出现正确答案(1 或 2 或 ^D - 完成输入)。
1) Proband
2) mincount
Enter an option: _
然后它检查case
部分中的答案。同时$promin
包含字符串,$REPLY
包含输入的答案。它也可以用于case
.