You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

可正常运行的Shell脚本在WSL中报错无法执行的问题求助

可正常运行的Shell脚本在WSL中报错无法执行的问题求助

大家好,我遇到一个很费解的问题——我写了一段简单的Shell脚本,在虚拟机上运行完全正常,但放到WSL(Windows Subsystem for Linux)里执行就弹出一堆语法错误,排查了好久都没找到问题所在,想请各位帮忙看看。

以下是我的脚本代码:

insert(){

read -p "Enter Name: " name

read -p "Enter Phone Number: " phoneNumber

echo "$name $phoneNumber" >> data.txt

}

id=100

while [ True ]

do

echo -e "[1] Insert data.\n[2] Search.\n[3]Remove Data.\n[q] Quit."

read -p "Enter yout Choice: " choice

if [ $choice -eq "4" ]; then

break

elif [ $choice -eq "1" ];then

insert

elif [ $choice -eq "2" ];then

echo "Search"

elif [ $choice -eq "3" ];then

echo "Remove"

else

echo "Please enter proper input."

fi

done

WSL中的错误输出

在WSL里执行脚本时,出现了这些错误信息:

Enter Name: Poojan
: bad variable nameme
Enter Phone Number: 23212
: bad variable nameoneNumber
: not found
: not found}
try.sh: 15: Syntax error: "elif" unexpected (expecting "then")

虚拟机中的正常输出

而在虚拟机上运行时,脚本完全正常,输出如下:

[1] Insert data.
[2] Search.
[3]Remove Data.
[q] Quit.
Enter yout Choice: 1
Enter Name: Poojan
Enter Phone Number: 3423423

我反复检查了脚本的语法,没发现明显问题,为什么在WSL里会出现这些错误呢?麻烦各位帮忙分析一下,谢谢!

备注:内容来源于stack exchange,提问作者Poojan Solanki

火山引擎 最新活动