我在CentOS 6.5的init.d脚本中看到了很多奇怪的怪癖,但我在大多数脚本末尾看到的一种模式是
case "$1" in
# ... commands here
esac
exit $?
Run Code Online (Sandbox Code Playgroud)
" exit $?"这里的目的是什么?
目前我尝试在守护进程启动泊坞窗图像与docker run -d ID(后推出这个COMMANDE: docker build -t toto .)
但是当我发布这个命令时docker exec -it ID bash,我有这个错误:
来自守护进程的错误响应:没有这样的id:toto
我的Dockerfile看起来像这样:
# Dockerfile
FROM debian:jessie
# Upgrade system
RUN apt-get update && apt-get dist-upgrade -y --no-install-recommends
# Install TOR
RUN apt-get install -y --no-install-recommends tor tor-geoipdb torsocks
# INSTALL POLIPO
RUN apt-get update && apt-get install -y polipo
# INSTALL PYTHON
RUN apt-get install -y python2.7 python-pip python-dev build-essential libreadline-gplv2-dev libncursesw5-dev libssl-dev libsqlite3-dev tk-dev libgdbm-dev libc6-dev libbz2-dev libffi-dev libxslt-dev libxml2-dev …Run Code Online (Sandbox Code Playgroud) 在bash外壳中,可以轻松地用引用数组declare -p,然后在eval稍后编辑以使其恢复正常。对于通过SSH将数组(作为脚本的一部分)传递到远程计算机,这似乎可以接受。
问题是,我不希望对方获得相同级别的信任。如果远程计算机受到威胁,则感染可能会通过未经eval声明的语句传播到本地计算机。
当前,要在机器之间传递数组,我使用的是这样的方法:
#!/bin/bash
# Define the modules we expect to find installed on the remote machine
expected_modules=(foo-module bar 'baz 2.0')
# SSH into the remote machine, send the arrays back and forth with "declare -p"
unparsed_missing_modules=$(ssh remote-machine /bin/bash << EOF
check_for_module() {
# Placeholder so that this can be tested locally
case \$1 in
foo*) true;;
*) false;;
esac
}
$(declare -p expected_modules)
missing_modules=()
for module in "\${expected_modules[@]}"; do
if …Run Code Online (Sandbox Code Playgroud) void push(float[],float);
Run Code Online (Sandbox Code Playgroud)
这里st[]是浮点数据类型堆栈,exp[]是存储后缀表达式的char数据类型数组.
push(st,(float)(exp[i]-'0'));
Run Code Online (Sandbox Code Playgroud)
我无法弄清楚(exp[i]-'0')部分的目的.我们为什么减去'0'?