2015-10-31 62 views
0
#!/bin/sh 
if [ $1+$2 -eq 1 ] 
then : ; 
else echo {$1..$2} 
fi 

你好球員, 得到這個代碼,它應該做的:從ARG1寫數字到arg2的($ 1 = 3,$ 2 = 6然後3 4 5 6應輸出)如果ARG遊戲0和1或0和1,應該做什麼,但實際上得到錯誤和壞輸出:

./kek1.sh: 2: [: Illegal number: 1+2 
{1..2} 

人知道什麼是錯?

謝謝。

+0

的[我如何遍歷各種可能的重複通過在bash變量定義號碼?](http://stackoverflow.com/questions/169511/how-do-i-iterate-over-a-range-of-numbers-defined-by-variables-in-bash) – l0b0

回答

0

這裏有幾個問題:

  • 數學必須是一個算術表達式$((...))
  • {...}內部進行不/bin/sh支持。
  • 實際上不是一個問題,但你可以否定if條件,避免使用else條款。

一個正確的解決辦法是

if ! [ $(($1 + $2)) -eq 1 ]; then 
    printf "$1" 
    i=$1 
    while [ "$i" -lt "$2" ]; do 
     i=$((i+1)) 
     printf " %d" "$i" 
    done 
fi 

如果有的話,你可以用它代替了while循環的seq命令:

if ! [ $(($1 + $2)) -eq 1 ]; then 
    seq "$1" "$2" 
fi