2017-10-28 133 views
0

我試圖附加到文件這個僞代碼:巴什 - 如何字,如果再聲明

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

回答

2

使用單引號:

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

如果我讀這個權利,你想追加這個實際的文本文件?

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)中的位將被評估,而不是按原樣傳遞給文件。