巴什 - 如何字,如果再声明

巴什 - 如何字,如果再声明

问题描述:

我试图附加到文件这个伪代码:巴什 - 如何字,如果再声明

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

我做这件事是壳为:

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

但它给了我一个语法错误附近的意外令牌'然后'。我无法弄清楚我要去哪里错了。

+2

呃。删除'echo'? – melpomene

+0

删除然后在回声线看它打印什么 –

+1

通常,使用'$(...)'而不是反引号,并使用'$(($ MOD%5))'而不是'expr'命令。 'echo'if [$(($ MOD%5))-eq 0];然后'。 – chepner

使用单引号:

$ 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通常不是一个有效的命令,这是有条件的外壳上下文之外(例如if),外壳不知道怎么用它做。

你需要做的是将整个事情作为一个字符串引用,并通过来回显。

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

使用单引号('),而不是双引号(")是很重要的。如果使用双引号,则反引号(expr $MOD % 5)中的位将被评估,而不是按原样传递给文件。