我有这个makefile:
echo:
echo "PASS=$(PASS)"
Run Code Online (Sandbox Code Playgroud)
我调用:
PASS='MYPA$$' make
Run Code Online (Sandbox Code Playgroud)
这显示了我:
echo "PASS=MYPA$"
PASS=MYPA$
Run Code Online (Sandbox Code Playgroud)
有人在评估$$->$。
这是壳吗?不是在输入值时,因为我使用单引号,防止外壳对其进行评估。
也许 make 调用的 shell 正在执行此操作...
或者是不是 make本身?
我怎样才能避免它?
docker-compose exec从读取时失败stdin:
$ echo "use mydb; show measurements;" | docker-compose exec influxdb influx
Connected to http://localhost:8086 version 1.2.4
InfluxDB shell version: 1.2.4
> Traceback (most recent call last):
File "/usr/local/bin/docker-compose", line 9, in <module>
load_entry_point('docker-compose==1.9.0', 'console_scripts', 'docker-compose')()
File "/usr/local/lib/python2.7/dist-packages/compose/cli/main.py", line 65, in main
command()
File "/usr/local/lib/python2.7/dist-packages/compose/cli/main.py", line 117, in perform_command
handler(command, command_options)
File "/usr/local/lib/python2.7/dist-packages/compose/cli/main.py", line 462, in exec_command
pty.start()
File "/usr/local/lib/python2.7/dist-packages/dockerpty/pty.py", line 338, in start
io.set_blocking(pump, flag)
File "/usr/local/lib/python2.7/dist-packages/dockerpty/io.py", line 32, in set_blocking
old_flag = fcntl.fcntl(fd, fcntl.F_GETFL) …Run Code Online (Sandbox Code Playgroud) 似乎保留字不能在python中用作属性:
$ python
Python 3.6.2 |Continuum Analytics, Inc.| (default, Jul 20 2017, 13:51:32)
[GCC 4.4.7 20120313 (Red Hat 4.4.7-1)] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> class A:
>>> global = 3
File "<stdin>", line 2
global = 3
^
SyntaxError: invalid syntax
Run Code Online (Sandbox Code Playgroud)
这似乎是明智的,因为它是模棱两可的:我在global这里使用关键字吗?很难说。
但这不是明智的恕我直言:
>>> class A: pass
>>> a = A()
>>> a.global = 3
File "<stdin>", line 1
a.global = 3
^
SyntaxError: invalid syntax
>>> a.def = 4
File …Run Code Online (Sandbox Code Playgroud)