Bash脚本中自定义SECONDS变量值在sleep后自动变更问题求助
问题原因与解决办法
你遇到的问题是因为SECONDS是Bash的特殊内置变量,它的默认功能就是记录脚本启动后到当前的累计运行秒数。哪怕你手动给它赋值,Bash也会在后台持续更新这个变量的值,所以sleep 5秒后,它会自动在之前的数值上加上5,导致输出变成9。
解决方法很简单:换个非特殊的变量名,避开Bash的内置特殊变量即可。比如把变量改成USER_SECONDS:
#!/bin/bash USER_SECONDS=$1 echo "seconds: $1" echo "seconds: $USER_SECONDS" sleep 5; echo "seconds: $USER_SECONDS"
执行./chk2.sh 4后,输出会符合你的预期:
seconds: 4 seconds: 4 seconds: 4
内容的提问来源于stack exchange,提问作者riveridea
相关产品推荐
相关产品推荐

