Vap*_*zer 4 variables bash ubuntu server
我对Linux shell感到困惑。可能是我监督了一些明显的Linux noob。
我只需要运行以下脚本:
#!/bin/bash
echo "Type some Text:"
read var
echo "You entered: "$var
Run Code Online (Sandbox Code Playgroud)
情况如下:
我读了一些破折号,但我不明白。以下是一些变体:
使用sh启动
user@Ubuntu:/media/buff/ShellScript$ sh test.sh
Type some Text:
:bad variable nameread var
You entered:
Run Code Online (Sandbox Code Playgroud)
使用bash启动:
user@Ubuntu:/media/buff/ShellScript$ bash test.sh
Type some Text:
': Ist kein gültiger Bezeichner.var (means no valid identifyier)
You entered:
Run Code Online (Sandbox Code Playgroud)
将脚本中的Shebang更改为“#!/ bin / sh”,使用sh启动
user@Ubuntu:/media/buff/ShellScript$ sh test.sh
Type some Text:
:bad variable nameread var
You entered:
Run Code Online (Sandbox Code Playgroud)
我现在在Internet上搜索了几个小时,并认为脚本本身还可以,但是缺少一些环境设置。我使用“ sudo dpkg-reconfigure破折号”将破折号设置为默认外壳(无论如何我还是认为它是ubuntu的默认设置)
熊猫熊猫:)
'\r'在shell脚本的行尾很可能有回车符(CR,),因此该变量正试图读入var\r而不是var。这就是为什么您的错误消息没有意义的原因。类似的错误应如下所示:
run.sh: 3: export: [... the variable name]: bad variable name
Run Code Online (Sandbox Code Playgroud)
在您的情况下,bash会引发错误,因为var\r由于回车导致变量名称非法,因此它会打印
test.sh: 3: read: var\r: bad variable name
Run Code Online (Sandbox Code Playgroud)
但是\r跳转到该行的开头,覆盖错误消息的开头。
可以通过使用dos2unix实用程序来从行尾移走回车。