巴什 - 如何字,如果再声明
问题描述:
我试图附加到文件这个伪代码:巴什 - 如何字,如果再声明
if [ `expr $MOD % 5` -eq 0 ]; then.
我做这件事是壳为:
echo 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
通常不是一个有效的命令,这是有条件的外壳上下文之外(例如if
),外壳不知道怎么用它做。
你需要做的是将整个事情作为一个字符串引用,并通过来回显。
echo 'if [ `expr $MOD % 5` -eq 0 ]; then'
使用单引号('
),而不是双引号("
)是很重要的。如果使用双引号,则反引号(expr $MOD % 5
)中的位将被评估,而不是按原样传递给文件。
呃。删除'echo'? – melpomene
删除然后在回声线看它打印什么 –
通常,使用'$(...)'而不是反引号,并使用'$(($ MOD%5))'而不是'expr'命令。 'echo'if [$(($ MOD%5))-eq 0];然后'。 – chepner