酷!學園

技術討論區 => Linux 討論版 => 主題作者是: 轩文 於 2020-04-01 15:30

主題: linux的shell脚本
作者: 轩文2020-04-01 15:30
各位前辈,下面的这个shell语句明明有问题,运行却没有出错,不知道问题出在哪里的,还请帮我看看。谢谢!

#!/bin/bash -e
a=$1
b=$2
echo $((a*0))
主題: Re: linux的shell脚本
作者: netman2020-04-05 15:16
你怎運行的? 結果是怎樣?
主題: Re: linux的shell脚本
作者: 轩文2020-04-06 12:43
我用sh.文件名运行的,运行的结果为0,但是好像并不正确,因为语法没有报错,所以我没法判断到底是那条语句出现了问题
主題: Re: linux的shell脚本
作者: netman2020-04-14 10:00
echo $(($a*0)) 呢?
主題: Re: linux的shell脚本
作者: 轩文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模块,想要进行深度学习,结果入门测试都没有通过,实在惭愧,因此在贴吧求助各位前辈。还望各位前辈不吝赐教!!!谢谢
主題: Re: linux的shell脚本
作者: netman2020-04-16 11:39
你本來不是說沒報錯嗎?我指出了可能會報錯的地方,不是你要的嗎?
沒有原始碼的情況下容易看問題...
主題: Re: linux的shell脚本
作者: 轩文2020-04-17 10:16
额,前辈,您先别激动,应该是我表述有问题,让您误会了,这个脚本的出处我在上一次回复中已经标注了,在那个网站中想要深度学习首先要通过入门测试,而我提供的这个脚本,正是shell的入门测试。因此,我说,拿到linux系统里面运行并不会报错,可是在网站中检测则是会报错。这是最让我摸不着头脑的地方了。https://www.codewars.com/?language=shell (https://www.codewars.com/?language=shell)
主題: Re: linux的shell脚本
作者: 轩文2020-04-17 10:21
附上一张主界面图片,也算是给需要的朋友们一个学习的平台,一起成长吧。里面有不同的语言,可以选择自己喜欢的。https://www.codewars.com/ (https://www.codewars.com/)
主題: Re: linux的shell脚本
作者: Jerry Liu2020-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模块,想要进行深度学习,结果入门测试都没有通过,实在惭愧,因此在贴吧求助各位前辈。还望各位前辈不吝赐教!!!谢谢
主題: Re: linux的shell脚本
作者: 轩文2020-04-22 12:22
额,前辈,那这个题怎么解决呢???我等了有差不多1个月了,都还没人能答对。。。哭了
主題: Re: linux的shell脚本
作者: twu22020-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:~#
主題: Re: linux的shell脚本
作者: 轩文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:~#

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

主題: Re: linux的shell脚本
作者: Jerry Liu2020-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:~#

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

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