【发布时间】:2016-02-21 07:29:35
【问题描述】:
我有一个像这样调用 python 脚本的 shell...
外壳代码:
#!/bin/sh
python PyTest.py
print("FE FI FO FUM I'M GOING TO MAKE IT TUMBLE TUM TUM")
5 + 4
print("No semicolons here!")
Python 代码:
#This is my test Python script running from bash
print("FE FI FO FUM I'M GOING TO MAKE IT TUMBLE TUM TUM")
print(5 + 4)
print("No semicolons here!")
这是输出。
74-85-81-234:Desktop Cody$ ./PyTest.sh
FE FI FO FUM I'M GOING TO MAKE IT TUMBLE TUM TUM
9
No semicolons here!
./PyTest.sh: line 5: syntax error near unexpected token `"FE FI FO FUM I'M GOING TO MAKE IT TUMBLE TUM TUM"'
./PyTest.sh: line 5: `print("FE FI FO FUM I'M GOING TO MAKE IT TUMBLE TUM TUM")'
我查看了“意外标记附近的语法错误”错误,看起来这是意料之中的。有没有更好的方法来做到这一点,有没有办法以这种方式调用函数而不会出现 Bash 错误?
提前致谢。
【问题讨论】:
-
如果你想写python,那就这样做并使用python解释器。如果要编写 shell 脚本,请使用 shell。不要指望 shell 理解 python 或 python 理解 shell 脚本。
-
为什么你的“shell脚本”Python的大部分文本?
-
您希望
5 + 4做什么?没有赋值,没有echo语句,这不是 sh 中算术的正确语法。支持print的 Korn shell 和 zsh,但它不是 POSIX 恭维,也不需要括号。您的 cmets 说您正在使用 bash,但您在脚本中指定了/bin/sh(可能链接到 bash,但不表现为 bash)。 -
你想要完成什么?直接的问题是在 shell 脚本中没有以这种方式使用括号(它们在子 shell 中运行命令;因此括号内的第一个标记应该是命令名称 - 但在这里,问题是使用不正确的括号或有用)。
-
... 但修复它会立即让您遇到
print的麻烦,这不是标准命令(因此“找不到命令”或可能执行您想要的其他操作的命令,可能涉及打印机并需要文件名,或者只是在另一栋楼的上锁房间里浪费一令纸),而且还不止于此。