可正常运行的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




