Shell Bash-如何使用if-then语句

Shell Bash-如何使用if-then语句,shell,syntax-error,token,pseudocode,Shell,Syntax Error,Token,Pseudocode,我试图将以下伪代码附加到文件: if [ `expr $MOD % 5` -eq 0 ]; then. 我在shell上做的是: echo if [ `expr $MOD % 5` -eq 0 ]; then 但它在意外标记“then”附近给了我一个语法错误。我想不出哪里出了问题。使用单引号: $ echo 'if [ `expr $MOD % 5` -eq 0 ]; then' if [ `expr $MOD % 5` -eq 0 ]; then 使用单引号: $ echo 'if

我试图将以下伪代码附加到文件:

 if [ `expr $MOD % 5` -eq 0 ]; then. 
我在shell上做的是:

 echo if [ `expr $MOD % 5` -eq 0 ]; then
但它在意外标记“then”附近给了我一个语法错误。我想不出哪里出了问题。

使用单引号:

$ echo 'if [ `expr $MOD % 5` -eq 0 ]; then'
if [ `expr $MOD % 5` -eq 0 ]; then
使用单引号:

$ echo 'if [ `expr $MOD % 5` -eq 0 ]; then'
if [ `expr $MOD % 5` -eq 0 ]; then

如果我读对了,你是想把这个实际的文本附加到一个文件中

if [ `expr $MOD % 5` -eq 0 ]; then
那么问题是你的命令结构。您使用的是:

echo if [ `expr $MOD % 5` -eq 0 ]; then
由于分号的原因,这实际上是两个shell命令。因此,这与:

echo if [ `expr $MOD % 5` -eq 0 ]
then
由于
then
通常不是有效的命令,并且这超出了shell条件的上下文(例如
if
),shell不知道如何处理它

您需要做的是将整个内容作为字符串引用,并将其传递给echo


使用单引号(
)而不是双引号(
)是很重要的。如果使用双引号,则将计算反勾号(
expr$MOD%5
)中的位,而不是按原样传递到文件中。

如果我读对了这篇文章,您是在尝试将实际文本附加到文件中吗

if [ `expr $MOD % 5` -eq 0 ]; then
那么问题是您的命令结构。您使用了以下命令:

echo if [ `expr $MOD % 5` -eq 0 ]; then
就shell而言,这实际上是两个命令,因为分号。因此,它与:

echo if [ `expr $MOD % 5` -eq 0 ]
then
由于
then
通常不是有效的命令,并且这超出了shell条件的上下文(例如
if
),shell不知道如何处理它

您需要做的是将整个内容作为字符串引用,并将其传递给echo


使用单引号(
)而不是双引号(
)很重要。如果使用双引号,则将计算反勾号(
expr$MOD%5
)中的位,而不是按原样传递到文件。

Er。删除
echo
?然后在echo行中删除以查看它打印的内容。通常,使用
$(…)
而不是反引号,使用
$($MOD%5))
而不是
expr
命令<代码>回显'if[$($MOD%5))-eq 0];然后“”,或者如果((MOD%5==0)),甚至是
;那么
就更具可读性了。手册中的Ref。删除
echo
?然后在echo行中删除以查看它打印的内容。通常,使用
$(…)
而不是反引号,使用
$($MOD%5))
而不是
expr
命令<代码>回显'if[$($MOD%5))-eq 0];然后“”,或者如果((MOD%5==0)),甚至是
;那么
就更具可读性了。参考手册中的