我正在为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 $
如果我擦掉了;它不再工作了。我该怎么办????
答案 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>