[Seek Help] sh代码在20.9和20.5表现不一
Tofloor
poster avatar
solothink
deepin
2024-02-18 09:26
Author

#!/bin/sh

获取当前时间并打印10次

count=0
for i in {1..10}
do
current_time=$(date +"%Y-%m-%d %H:%M:%S")
echo "当前时间是: $current_time"
echo $i
sleep 1
count=$((count+1))
done

检查是否打印了10次

if [ $count -eq 10 ]; then
exit 0 # 正常退出脚本
else
echo "未打印10次" # 或其他适当的错误消息
fi

以上代码在20.5表现正常,如下

time_deepin20.5.jpg

在20.9中表现不符合预期,不知道为什么,还请各位看一下

time_deepin20.9.png

采用了bash time.sh,运行正常了,但能解释一下为什么吗?谢谢啦!我之前的用的是./time.sh,是不是默认的sh不是bash,是不是能在什么地方设置啊

Reply Favorite View the author
All Replies
deepin
2024-02-18 09:48
#1

你可以使用c风格的代码

将“for i in {1..10}”改成for ((count=0;count<=9;count++))

Reply View the author
liwl
deepin
2024-02-18 10:00
#2

你说的是对的,默认sh应该不是bash所致

如果要设置,你可以在你的sh脚本里面,直接写!#/bin/bash就可以了

Reply View the author
132******79
deepin
2024-02-18 19:36
#3

我操作系统是Deepin20.9。看起来和你的20.9结果是不太一样的哦。

image.png

Reply View the author
solothink
deepin
2024-02-20 09:03
#4

你可以使用c风格的代码

将“for i in {1..10}”改成for ((count=0;count<=9;count++))

对的,我后来改成你这样了。这种就没啥问题。

Reply View the author
solothink
deepin
2024-02-20 09:04
#5

你可以使用c风格的代码

将“for i in {1..10}”改成for ((count=0;count<=9;count++))

另外我把注释里改成/bash就没问题了。

Reply View the author
吴王阖闾
deepin
2024-02-26 13:50
#6

还有就是 使用 "\" 换行,之前可以,之后就报语法错误,不过我的确在 "\"后面加了空格。

Reply View the author