【发布时间】:2012-06-11 11:36:06
【问题描述】:
您好,我是 bash 脚本的新手,我有一个不适合我的简单程序。我认为这是一个语法错误。
#!/bin/bash
#example1.sh
read Age
if ["$Age" -lt "18"]; then
echo "You must go to school"
fi
当我输入 1 时,它显示 [1: command not found
【问题讨论】:
您好,我是 bash 脚本的新手,我有一个不适合我的简单程序。我认为这是一个语法错误。
#!/bin/bash
#example1.sh
read Age
if ["$Age" -lt "18"]; then
echo "You must go to school"
fi
当我输入 1 时,它显示 [1: command not found
【问题讨论】:
你需要空格:
if [ "$Age" -lt "18" ]; then
(总结:Bash 语法规则令人震惊。)
【讨论】:
if test "$Age" -lt 18; then 是更合理的语法。
if ((Age < 18)); then 是一种更合理的语法——空格是可选的。
[ 不是任何 Bourne shell 语法的一部分。 (( 是 bash 语法的一部分,但不是许多其他 shell 语法的一部分。
[ 不是语法的一部分([[ 也不是)它们是命令。命令必须被空格包围(或者在某些其他字符之前或之后,例如; 或& 等)。
#!/bin/bash
#example1.bash
read Age
if(($Age < 18)); then
echo "You must go to school"
fi
此代码在 bash 中运行时有效。 bash 和 sh 并不完全相同。
【讨论】: