Ubuntu 终端中条件表达式和“then”附近的语法错误
Syntax error in conditional expression and near `then' in Ubuntu terminal
我刚开始学习终端命令,正在尝试创建自己的命令,但遇到以下问题
./myFile: line 10: syntax error in conditional expression
./myFile: line 11: syntax error near `then'
./myFile: line 11: ` then'
有我的代码
#!/bin/bash
echo "please enter name of the folder"
read NAME1
if [[ $NAME1 ]]
then
echo "enter first number"
read NUM1
if [[ $NUM1 ]] && [[ $NUM1 -ge 0]]
then
echo "enter last number"
read NUM2
if [[ $NUM2 ]] && [[ $NUM2 -gt $NUM ]]
then
mkdir $NAME1{$NUM1..$NUM2}
else
echo"please enter last number to continue"
fi
else
echo "please enter first number to continue"
fi
else
echo "please enter name of the folder to continue"
fi
首先,表达式 [[ $NAME1 ]]
无效,或者至少,它没有按照您的想法行事。我相信您正在尝试确定用户是否实际输入了字符串。为此,您应该测试 non-empty 字符串 ([[ -n ${NAME1} ]]
) 或测试长度大于零的字符串 ([[ ${#NAME1} -gt 0 ]]
)。当您测试 $NUM1
和 $NUM2
.
时同样适用
其次,在处理用户输入时,应注意避免测试空字符串。这最好通过引用变量来实现。例如:[[ "${NUM1}" -gt 0 ]]
.
第三,space在测试中很重要。始终在 [[
之后和 ]]
.
之前留下一个 space
此外,$NUM
(第 15 行)未声明,因此计算结果为空字符串。这应该在脚本的较早位置设置。
此脚本还有许多其他方面可以改进(例如检查数字输入、检查有效文件夹名称等)。但上述更改应该可以让您克服直接错误。
我刚开始学习终端命令,正在尝试创建自己的命令,但遇到以下问题
./myFile: line 10: syntax error in conditional expression
./myFile: line 11: syntax error near `then'
./myFile: line 11: ` then'
有我的代码
#!/bin/bash
echo "please enter name of the folder"
read NAME1
if [[ $NAME1 ]]
then
echo "enter first number"
read NUM1
if [[ $NUM1 ]] && [[ $NUM1 -ge 0]]
then
echo "enter last number"
read NUM2
if [[ $NUM2 ]] && [[ $NUM2 -gt $NUM ]]
then
mkdir $NAME1{$NUM1..$NUM2}
else
echo"please enter last number to continue"
fi
else
echo "please enter first number to continue"
fi
else
echo "please enter name of the folder to continue"
fi
首先,表达式 [[ $NAME1 ]]
无效,或者至少,它没有按照您的想法行事。我相信您正在尝试确定用户是否实际输入了字符串。为此,您应该测试 non-empty 字符串 ([[ -n ${NAME1} ]]
) 或测试长度大于零的字符串 ([[ ${#NAME1} -gt 0 ]]
)。当您测试 $NUM1
和 $NUM2
.
其次,在处理用户输入时,应注意避免测试空字符串。这最好通过引用变量来实现。例如:[[ "${NUM1}" -gt 0 ]]
.
第三,space在测试中很重要。始终在 [[
之后和 ]]
.
此外,$NUM
(第 15 行)未声明,因此计算结果为空字符串。这应该在脚本的较早位置设置。
此脚本还有许多其他方面可以改进(例如检查数字输入、检查有效文件夹名称等)。但上述更改应该可以让您克服直接错误。