2011-03-31 192 views
0

我想製作一個shell腳本,它需要參數,然後根據第二個變量執行相應的數學公式。我「在‘Shell腳本案例問題

#!/bin/sh 
echo "Variable name \$1 $1" 
echo "Variable name \$2 $2" 
echo "Variable name \$3 $3" 
y=$2 
echo $y 
case $y in 
    '+') x=`expr $1 + $3` 
      echo $x 
      ;; 
    '-') x=`expr $1 - $3` 
      echo $x 
      ;; 
    '\*') x=`expr $1 \* $3` 
      echo $x 
      ;; 
    '/') x=`expr $1/$3` 
      echo $x 
      ;; 
    '%') x=`expr $1 % $3` 
      echo $x 
      ;; 
    '*') echo "Invalid option" 
      exit 1 
      ;; 
esac 

回答

0

嘗試。

#!/bin/sh 
echo "Variable name \$1 $1" 
echo "Variable name \$2 $2" 
echo "Variable name \$3 $3" 
y=$2 
echo $y 
case $y in 
'+') x=`expr $1 + $3`; echo $x 
;; 
'-') x=`expr $1 - $3`; echo $x 
;; 
'\*') x=`expr $1 * $3`; echo $x 
;; 
'/') x=`expr $1/$3`; echo $x 
;; 
'%') x=`expr $1 % $3`; echo $x 
;; 
*) echo "Invalid option" 
exit 1 
;; 
esac 

一些提示: (1) '*' 應在殼體結構的端部爲*。 *表示所有其他情況,而'*'表示只是*。 (2)x = expr $ 1 + $ 3應該是x =`expr $ 1 + $ 3`,「(反向鍵)意味着在子shell中執行一些命令並將輸出分配給x。 (3)在一行中有多個命令,';'應該使用。 x =`expr $ 1%$ 3`; echo $ x

+0

我嘗試了所有這些更改,但仍收到相同的錯誤。它在案件陳述開始時就像是一個錯誤。 – Rumel 2011-03-31 02:38:38

+0

@Rurnel,我想你應該檢查一下使用的是什麼shell。當你的砰砰聲是#!/ bin/sh時,輸入'ls -l \'which sh \''並檢查輸出。 _Bash_,_dash_和_sh_應該是可以接受的結果。 [Here](http://www.grymoire.com/Unix/Sh.html#uh-82)是一個關於shell中的case結構的教程。只需將一個示例粘貼到您的shell中,並檢查是否有錯誤。順便說一句,完整的錯誤輸出將有助於確定問題。 – tianyapiaozi 2011-03-31 02:54:54

+0

1rwxrwxrwx 1 root root 9 2011-01-02 01:09/usr/bin/sh - >/bin/bash – Rumel 2011-03-31 04:56:46

-1

如果你正在使用bash,改變你的家當來#!/bin/bash

0

最後一種情況。條款應

接受「附近意外的標記語法錯誤'來」和’案例」 $ Y
*) echo "Invalid option" 

即刪除不'*'

+0

我已經完成所有這些更改,但問題仍然存在 – Rumel 2011-03-31 02:02:22