:command not foundop / dominio.sh:第2行:

时间:2014-02-19 18:38:27

标签: macos sh

我正在为Mac编写shell脚本。 这是我的剧本:

echo "Bienvenido";
/Applications/sdk/platform-tools/adb devices;
sudo /Applications/sdk/platform-tools/adb  shell input text 'sp.soporte@gmail.com';

它实现了正确的操作,但这是输出:

$ /Users/julien/Desktop/dominio.sh 
Bienvenido
: command not foundop/dominio.sh: line 1: 
List of devices attached 
4790057be1803096    device

: command not foundop/dominio.sh: line 2: 
: command not foundop/dominio.sh: line 3: 

julien $

如果我擦掉了;它不再工作了。我该怎么办????

1 个答案:

答案 0 :(得分:1)

我认为你的脚本中有Windows风格的行结尾。

类似Unix的系统,包括MacOS,使用单个LF字符来终止一条线; Windows使用CR-LF对。

Windows样式的文本文件在类Unix系统上看起来像普通文本,每行末尾都有一个额外的CR字符。

由于每行末尾都有分号,因此该行:

echo "Bienvenido";

在shell中显示为两个命令:echo "Bienvenido"和CR字符(如果存在,它实际上可以是命令名)。请注意,echo命令已执行。

shell会输出错误消息,例如:

/path/to/script: 1: CR: command not found

除了它打印实际的CR(回车)字符,它将光标移动到当前行的开头,覆盖部分错误消息。

翻译脚本以使用Unix风格的行结尾。如果有的话,可以使用dos2unix。 (阅读手册页;与大多数过滤器程序不同,它默认会覆盖其输入文件。)

顺便说一句,在shell脚本的每一行的末尾不需要分号。只有在一行上有多个命令时才需要使用分号。

此外,您可能应该在脚本的第一行"shebang" #!/bin/sh#!/bin/bash(如果您的脚本使用特定于bash的功能,请使用后者)。< / p>