作者 主題: linux的shell脚本  (閱讀 9684 次)

0 會員 與 1 訪客 正在閱讀本文。

轩文

  • 可愛的小學生
  • *
  • 文章數: 8
    • 檢視個人資料
linux的shell脚本
« 於: 2020-04-01 15:30 »
各位前辈,下面的这个shell语句明明有问题,运行却没有出错,不知道问题出在哪里的,还请帮我看看。谢谢!

#!/bin/bash -e
a=$1
b=$2
echo $((a*0))

netman

  • 管理員
  • 俺是博士!
  • *****
  • 文章數: 17484
    • 檢視個人資料
    • http://www.study-area.org
Re: linux的shell脚本
« 回覆 #1 於: 2020-04-05 15:16 »
你怎運行的? 結果是怎樣?

轩文

  • 可愛的小學生
  • *
  • 文章數: 8
    • 檢視個人資料
Re: linux的shell脚本
« 回覆 #2 於: 2020-04-06 12:43 »
我用sh.文件名运行的,运行的结果为0,但是好像并不正确,因为语法没有报错,所以我没法判断到底是那条语句出现了问题

netman

  • 管理員
  • 俺是博士!
  • *****
  • 文章數: 17484
    • 檢視個人資料
    • http://www.study-area.org
Re: linux的shell脚本
« 回覆 #3 於: 2020-04-14 10:00 »
echo $(($a*0)) 呢?

轩文

  • 可愛的小學生
  • *
  • 文章數: 8
    • 檢視個人資料
Re: linux的shell脚本
« 回覆 #4 於: 2020-04-14 10:27 »
尊敬的前辈,感谢您的回复,我试了一下您的解决方案,很遗憾,结局依然是报错。
报错命令如下:
Ten Random Tests
 Multiply 0 with 172
Test Passed
 Multiply 1 with 358
Test Failed
expected: "358"
     got: "0"

(compared using ==)
 Multiply 2 with 544
Test Failed
expected: "1088"
     got: "0"

(compared using ==)
 Multiply 3 with 13
Test Failed
expected: "39"
     got: "0"

(compared using ==)
 Multiply 4 with 953
Test Failed
expected: "3812"
     got: "0"

(compared using ==)
 Multiply 5 with 739
Test Failed
expected: "3695"
     got: "0"

(compared using ==)
 Multiply 6 with 888
Test Failed
expected: "5328"
     got: "0"

(compared using ==)
 Multiply 7 with 359
Test Failed
expected: "2513"
     got: "0"

(compared using ==)
 Multiply 8 with 716
Test Failed
expected: "5728"
     got: "0"

(compared using ==)
 Multiply 9 with 874
Test Failed
expected: "7866"
     got: "0"

(compared using ==)

这个脚本出自于我在一个网站找的shell入门测试。
网址如下:https://www.codewars.com/
我选择了shell模块,想要进行深度学习,结果入门测试都没有通过,实在惭愧,因此在贴吧求助各位前辈。还望各位前辈不吝赐教!!!谢谢

netman

  • 管理員
  • 俺是博士!
  • *****
  • 文章數: 17484
    • 檢視個人資料
    • http://www.study-area.org
Re: linux的shell脚本
« 回覆 #5 於: 2020-04-16 11:39 »
你本來不是說沒報錯嗎?我指出了可能會報錯的地方,不是你要的嗎?
沒有原始碼的情況下容易看問題...

轩文

  • 可愛的小學生
  • *
  • 文章數: 8
    • 檢視個人資料
Re: linux的shell脚本
« 回覆 #6 於: 2020-04-17 10:16 »
额,前辈,您先别激动,应该是我表述有问题,让您误会了,这个脚本的出处我在上一次回复中已经标注了,在那个网站中想要深度学习首先要通过入门测试,而我提供的这个脚本,正是shell的入门测试。因此,我说,拿到linux系统里面运行并不会报错,可是在网站中检测则是会报错。这是最让我摸不着头脑的地方了。https://www.codewars.com/?language=shell

轩文

  • 可愛的小學生
  • *
  • 文章數: 8
    • 檢視個人資料
Re: linux的shell脚本
« 回覆 #7 於: 2020-04-17 10:21 »
附上一张主界面图片,也算是给需要的朋友们一个学习的平台,一起成长吧。里面有不同的语言,可以选择自己喜欢的。https://www.codewars.com/

Jerry Liu

  • 鑽研的研究生
  • *****
  • 文章數: 541
  • 性別: 男
    • 檢視個人資料
Re: linux的shell脚本
« 回覆 #8 於: 2020-04-22 11:11 »
這不是shell的問題
要看懂他的回應訊息
他要算的是 a*b

echo $((a*b))

尊敬的前辈,感谢您的回复,我试了一下您的解决方案,很遗憾,结局依然是报错。
报错命令如下:
Ten Random Tests
 Multiply 0 with 172
Test Passed
 Multiply 1 with 358
Test Failed
expected: "358"
     got: "0"

(compared using ==)
 Multiply 2 with 544
Test Failed
expected: "1088"
     got: "0"

(compared using ==)
 Multiply 3 with 13
Test Failed
expected: "39"
     got: "0"

(compared using ==)
 Multiply 4 with 953
Test Failed
expected: "3812"
     got: "0"

(compared using ==)
 Multiply 5 with 739
Test Failed
expected: "3695"
     got: "0"

(compared using ==)
 Multiply 6 with 888
Test Failed
expected: "5328"
     got: "0"

(compared using ==)
 Multiply 7 with 359
Test Failed
expected: "2513"
     got: "0"

(compared using ==)
 Multiply 8 with 716
Test Failed
expected: "5728"
     got: "0"

(compared using ==)
 Multiply 9 with 874
Test Failed
expected: "7866"
     got: "0"

(compared using ==)

这个脚本出自于我在一个网站找的shell入门测试。
网址如下:https://www.codewars.com/
我选择了shell模块,想要进行深度学习,结果入门测试都没有通过,实在惭愧,因此在贴吧求助各位前辈。还望各位前辈不吝赐教!!!谢谢
« 上次編輯: 2020-04-22 11:13 由 Jerry Liu »
水泥森林中的狼

好懷念的暱稱啊 .................

轩文

  • 可愛的小學生
  • *
  • 文章數: 8
    • 檢視個人資料
Re: linux的shell脚本
« 回覆 #9 於: 2020-04-22 12:22 »
额,前辈,那这个题怎么解决呢???我等了有差不多1个月了,都还没人能答对。。。哭了

twu2

  • 管理員
  • 俺是博士!
  • *****
  • 文章數: 5416
  • 性別: 男
    • 檢視個人資料
    • http://blog.teatime.com.tw/1
Re: linux的shell脚本
« 回覆 #10 於: 2020-04-23 11:25 »
貼個 script, 沒說你怎麼跑的, 問你怎麼執行的也沒回答.... 是要用猜的嗎?

如果你是要算 a * b 的值, 那, 一開始就寫錯成 a * 0 了, 任何數 * 0 結果就只會是 0. (前面 Jerry Liu 不是給答案了嗎?)

如果不是要算 a * b, 那就說清楚你要的是什麼, 傳入的值是什麼, 執行的結果是什麼, 結果不正確, 那... 你認為的正確結果又是什麼吧.

代碼: [選擇]
root@php-test:~# cat x.sh
#!/bin/bash

a=$1
b=$2
echo "a = $a"
echo "b = $b"
echo -n '$((a*0)) = '
echo $((a*0))
echo -n '$((a*b)) = '
echo $((a*b))
root@php-test:~# ./x.sh
a =
b =
$((a*0)) = 0
$((a*b)) = 0
root@php-test:~# ./x.sh 2 5
a = 2
b = 5
$((a*0)) = 0
$((a*b)) = 10
root@php-test:~# ./x.sh 3 6
a = 3
b = 6
$((a*0)) = 0
$((a*b)) = 18
root@php-test:~#

轩文

  • 可愛的小學生
  • *
  • 文章數: 8
    • 檢視個人資料
Re: linux的shell脚本
« 回覆 #11 於: 2020-04-23 13:29 »
感谢前辈的回复的解答,甚至到了把完整的脚本和运行过程结果发出来这种地步了,实在令我汗颜!!!经过多次测试,我猜测,可能并不是脚本的问题,是它网站对答案的检测可能有问题。所以真的很感谢各位前辈,
貼個 script, 沒說你怎麼跑的, 問你怎麼執行的也沒回答.... 是要用猜的嗎?

如果你是要算 a * b 的值, 那, 一開始就寫錯成 a * 0 了, 任何數 * 0 結果就只會是 0. (前面 Jerry Liu 不是給答案了嗎?)

如果不是要算 a * b, 那就說清楚你要的是什麼, 傳入的值是什麼, 執行的結果是什麼, 結果不正確, 那... 你認為的正確結果又是什麼吧.

代碼: [選擇]
root@php-test:~# cat x.sh
#!/bin/bash

a=$1
b=$2
echo "a = $a"
echo "b = $b"
echo -n '$((a*0)) = '
echo $((a*0))
echo -n '$((a*b)) = '
echo $((a*b))
root@php-test:~# ./x.sh
a =
b =
$((a*0)) = 0
$((a*b)) = 0
root@php-test:~# ./x.sh 2 5
a = 2
b = 5
$((a*0)) = 0
$((a*b)) = 10
root@php-test:~# ./x.sh 3 6
a = 3
b = 6
$((a*0)) = 0
$((a*b)) = 18
root@php-test:~#

关于前辈说的问题,或者说脚本要求没有提清楚,我也属实无奈,我的本意是希望解决问题,绝不是拿各位前辈消遣寻开心。望各位前辈理解,如果有得罪的的地方,在这个给各位前辈道歉。遗憾的是最终我还是没有通过测试(尽管我认为各位前辈给出的修改方案都没有问题,可是网站还是没通过)。最后祝各位前辈身体健康,工作顺利!


Jerry Liu

  • 鑽研的研究生
  • *****
  • 文章數: 541
  • 性別: 男
    • 檢視個人資料
Re: linux的shell脚本
« 回覆 #12 於: 2020-04-28 11:39 »
#!/bin/bash -e
a=$1
b=$2
echo $((a*b))

放在最前面,這樣應該夠明顯了吧 ... 這就是答案,我去你提供的網址測試過了

感谢前辈的回复的解答,甚至到了把完整的脚本和运行过程结果发出来这种地步了,实在令我汗颜!!!经过多次测试,我猜测,可能并不是脚本的问题,是它网站对答案的检测可能有问题。所以真的很感谢各位前辈,
貼個 script, 沒說你怎麼跑的, 問你怎麼執行的也沒回答.... 是要用猜的嗎?

如果你是要算 a * b 的值, 那, 一開始就寫錯成 a * 0 了, 任何數 * 0 結果就只會是 0. (前面 Jerry Liu 不是給答案了嗎?)

如果不是要算 a * b, 那就說清楚你要的是什麼, 傳入的值是什麼, 執行的結果是什麼, 結果不正確, 那... 你認為的正確結果又是什麼吧.

代碼: [選擇]
root@php-test:~# cat x.sh
#!/bin/bash

a=$1
b=$2
echo "a = $a"
echo "b = $b"
echo -n '$((a*0)) = '
echo $((a*0))
echo -n '$((a*b)) = '
echo $((a*b))
root@php-test:~# ./x.sh
a =
b =
$((a*0)) = 0
$((a*b)) = 0
root@php-test:~# ./x.sh 2 5
a = 2
b = 5
$((a*0)) = 0
$((a*b)) = 10
root@php-test:~# ./x.sh 3 6
a = 3
b = 6
$((a*0)) = 0
$((a*b)) = 18
root@php-test:~#

关于前辈说的问题,或者说脚本要求没有提清楚,我也属实无奈,我的本意是希望解决问题,绝不是拿各位前辈消遣寻开心。望各位前辈理解,如果有得罪的的地方,在这个给各位前辈道歉。遗憾的是最终我还是没有通过测试(尽管我认为各位前辈给出的修改方案都没有问题,可是网站还是没通过)。最后祝各位前辈身体健康,工作顺利!
水泥森林中的狼

好懷念的暱稱啊 .................

轩文

  • 可愛的小學生
  • *
  • 文章數: 8
    • 檢視個人資料
Re: linux的shell脚本
« 回覆 #13 於: 2020-04-30 10:58 »
感谢Jerry Liu 前辈的讲解!!!开森的跳起来,确实通过了,是我愚钝,开始没有领悟前辈说的话,直到前辈真手把手教学我才搞懂,当真是临表涕零不知所言!总之,谢谢前辈的热心解答,前辈万岁!!!!
#!/bin/bash -e
a=$1
b=$2
echo $((a*b))

放在最前面,這樣應該夠明顯了吧 ... 這就是答案,我去你提供的網址測試過了

感谢前辈的回复的解答,甚至到了把完整的脚本和运行过程结果发出来这种地步了,实在令我汗颜!!!经过多次测试,我猜测,可能并不是脚本的问题,是它网站对答案的检测可能有问题。所以真的很感谢各位前辈,
貼個 script, 沒說你怎麼跑的, 問你怎麼執行的也沒回答.... 是要用猜的嗎?

如果你是要算 a * b 的值, 那, 一開始就寫錯成 a * 0 了, 任何數 * 0 結果就只會是 0. (前面 Jerry Liu 不是給答案了嗎?)

如果不是要算 a * b, 那就說清楚你要的是什麼, 傳入的值是什麼, 執行的結果是什麼, 結果不正確, 那... 你認為的正確結果又是什麼吧.

代碼: [選擇]
root@php-test:~# cat x.sh
#!/bin/bash

a=$1
b=$2
echo "a = $a"
echo "b = $b"
echo -n '$((a*0)) = '
echo $((a*0))
echo -n '$((a*b)) = '
echo $((a*b))
root@php-test:~# ./x.sh
a =
b =
$((a*0)) = 0
$((a*b)) = 0
root@php-test:~# ./x.sh 2 5
a = 2
b = 5
$((a*0)) = 0
$((a*b)) = 10
root@php-test:~# ./x.sh 3 6
a = 3
b = 6
$((a*0)) = 0
$((a*b)) = 18
root@php-test:~#

关于前辈说的问题,或者说脚本要求没有提清楚,我也属实无奈,我的本意是希望解决问题,绝不是拿各位前辈消遣寻开心。望各位前辈理解,如果有得罪的的地方,在这个给各位前辈道歉。遗憾的是最终我还是没有通过测试(尽管我认为各位前辈给出的修改方案都没有问题,可是网站还是没通过)。最后祝各位前辈身体健康,工作顺利!