我对Linux shell感到困惑。我可能会监督一些明显的Linux菜鸟。
我想要的是运行以下脚本:
#!/bin/bash
echo "Type some Text:"
read var
echo "You entered: "$var
情况如下:
我read关于破折号,但我没有得到它。 以下是一些变体:
使用sh启动
user@Ubuntu:/media/buff/ShellScript$ sh test.sh
Type some Text:
:bad variable nameread var
You entered:
使用bash启动:
user@Ubuntu:/media/buff/ShellScript$ bash test.sh
Type some Text:
': Ist kein gültiger Bezeichner.var (means no valid identifyier)
You entered:
将脚本中的Shebang更改为“#!/ bin / sh”,使用sh启动
user@Ubuntu:/media/buff/ShellScript$ sh test.sh
Type some Text:
:bad variable nameread var
You entered:
我现在在互联网上搜索了好几个小时,我认为脚本本身还可以,但是缺少一些环境设置。 我使用“sudo dpkg-reconfigure dash”将dash设置为默认shell(我认为无论如何都是ubuntu默认值)
sadface panda:)
答案 0 :(得分:5)
在shell脚本的行末尾最有可能是回车符(CR,'\r'
),因此该变量正在尝试读入var\r
而不是var
。这就是您的错误消息毫无意义的原因。类似的错误应该look like this:
run.sh: 3: export: [... the variable name]: bad variable name
在你的情况下,bash抛出一个错误,因为var\r
由于回车而对于变量名是非法的,所以打印
test.sh: 3: read: var\r: bad variable name
但是\r
跳转到行的开头,覆盖了错误消息的开头。
可能使用dos2unix
实用程序删除行末尾的回车符。
答案 1 :(得分:0)
以下是支持unix换行符的list of editors。
Brackets有extension用于新行/行尾支持,它内置在Notepad ++中。转到'编辑'标签。查找EOL转化次数'并选择Unix(LF)。 应该完成它。