被迫对当前客户端使用CVS,并且更改了远程回收的地址。在本地代码中更改远程地址的唯一方法是递归搜索和替换。
然而,使用sed命令,我希望工作:
find ./ -type f -exec sed -i "s/192.168.20.1/new.domain.com/" {} \;
我得到一个错误的每个文件:
sed: 1: ".//file/path ...": invalid command code .
我尝试在sed匹配/替换中转义句点,但这并不能解决任何问题。
被迫对当前客户端使用CVS,并且更改了远程回收的地址。在本地代码中更改远程地址的唯一方法是递归搜索和替换。
然而,使用sed命令,我希望工作:
find ./ -type f -exec sed -i "s/192.168.20.1/new.domain.com/" {} \;
我得到一个错误的每个文件:
sed: 1: ".//file/path ...": invalid command code .
我尝试在sed匹配/替换中转义句点,但这并不能解决任何问题。
被迫对当前客户端使用CVS,并且更改了远程回收的地址。在本地代码中更改远程地址的唯一方法是递归搜索和替换。
然而,使用sed命令,我希望工作:
find ./ -type f -exec sed -i "s/192.168.20.1/new.domain.com/" {} \;
我得到一个错误的每个文件:
sed: 1: ".//file/path ...": invalid command code .
我尝试在sed匹配/替换中转义句点,但这并不能解决任何问题。
我做一些bash脚本,现在我有一个变量调用源和一个数组称为样本,像这样:
source='country'
samples=(US Canada Mexico...)
因为我想要扩展源的数量(每个源都有自己的样本),我尝试添加一些参数来做到这一点。我试了一下:
source=""
samples=("")
if [ $1="country" ]; then
source="country"
samples="US Canada Mexico..."
else
echo "try again"
fi
但是当我运行我的脚本时,它不起作用。 我做错了什么?
如何在Ubuntu上编写安装MySQL服务器的脚本?
Sudo apt-get install mysql将安装,但它也会要求在控制台中输入密码。
我如何以非交互的方式做到这一点?也就是说,写一个脚本,可以提供密码吗?
#!/bin/bash
sudo apt-get install mysql # To install MySQL server
# How to write script for assigning password to MySQL root user
# End
Docker开始抛出以下错误:
standard_init_linux。Go:178: exec用户进程导致“exec格式错误”
每当我用CMD或ENTRYPOINT运行特定的docker容器时,不考虑对文件的任何更改,然后删除CMD或ENTRYPOINT。这是我一直在工作的docker文件,直到大约一个小时前都工作得很完美:
FROM buildpack-deps:jessie
ENV PATH /usr/local/bin:$PATH
ENV LANG C.UTF-8
RUN apt-get update && apt-get install -y --no-install-recommends \
tcl \
tk \
&& rm -rf /var/lib/apt/lists/*
ENV GPG_KEY 0D96DF4D4110E5C43FBFB17F2D347EA6AA65421D
ENV PYTHON_VERSION 3.6.0
ENV PYTHON_PIP_VERSION 9.0.1
RUN set -ex \
&& buildDeps=' \
tcl-dev \
tk-dev \
' \
&& apt-get update && apt-get install -y $buildDeps --no-install-recommends && rm -rf /var/lib/apt/lists/* \
\
&& wget -O python.tar.xz "https://www.python.org/ftp/python/${PYTHON_VERSION%%[a-z]*}/Python-$PYTHON_VERSION.tar.xz" \
&& wget -O python.tar.xz.asc "https://www.python.org/ftp/python/${PYTHON_VERSION%%[a-z]*}/Python-$PYTHON_VERSION.tar.xz.asc" \
&& export GNUPGHOME="$(mktemp -d)" \
&& gpg --keyserver ha.pool.sks-keyservers.net --recv-keys "$GPG_KEY" \
&& gpg --batch --verify python.tar.xz.asc python.tar.xz \
&& rm -r "$GNUPGHOME" python.tar.xz.asc \
&& mkdir -p /usr/src/python \
&& tar -xJC /usr/src/python --strip-components=1 -f python.tar.xz \
&& rm python.tar.xz \
\
&& cd /usr/src/python \
&& ./configure \
--enable-loadable-sqlite-extensions \
--enable-shared \
&& make -j$(nproc) \
&& make install \
&& ldconfig \
\
&& if [ ! -e /usr/local/bin/pip3 ]; then : \
&& wget -O /tmp/get-pip.py 'https://bootstrap.pypa.io/get-pip.py' \
&& python3 /tmp/get-pip.py "pip==$PYTHON_PIP_VERSION" \
&& rm /tmp/get-pip.py \
; fi \
&& pip3 install --no-cache-dir --upgrade --force-reinstall "pip==$PYTHON_PIP_VERSION" \
&& [ "$(pip list |tac|tac| awk -F '[ ()]+' '$1 == "pip" { print $2; exit }')" = "$PYTHON_PIP_VERSION" ] \
\
&& find /usr/local -depth \
\( \
\( -type d -a -name test -o -name tests \) \
-o \
\( -type f -a -name '*.pyc' -o -name '*.pyo' \) \
\) -exec rm -rf '{}' + \
&& apt-get purge -y --auto-remove $buildDeps \
&& rm -rf /usr/src/python ~/.cache
RUN cd /usr/local/bin \
&& { [ -e easy_install ] || ln -s easy_install-* easy_install; } \
&& ln -s idle3 idle \
&& ln -s pydoc3 pydoc \
&& ln -s python3 python \
&& ln -s python3-config python-config
RUN pip install uwsgi
RUN mkdir /config
RUN mkdir /logs
ENV HOME /var/www
WORKDIR /config
ADD conf/requirements.txt /config
RUN pip install -r /config/requirements.txt
ADD conf/wsgi.py /config
ADD conf/wsgi.ini /config
ADD conf/__init__.py /config
ADD start.sh /bin/start.sh
RUN chmod +x /bin/start.sh
EXPOSE 8000
ENTRYPOINT ["start.sh", "uwsgi", "--ini", "wsgi.ini"]
我试图创建一个简单的Bash脚本来检查网站是否关闭,由于某种原因“和”操作符不工作:
#!/usr/bin/env bash
WEBSITE=domain.example
SUBJECT="$WEBSITE DOWN!"
EMAILID="an@email.example"
STATUS=$(curl -sI $WEBSITE | awk '/HTTP\/1.1/ { print $2 }')
STRING=$(curl -s $WEBSITE | grep -o "string_to_search")
VALUE="string_to_search"
if [ $STATUS -ne 200 ] && [[ "$STRING" != "$VALUE" ]]; then
echo "Website: $WEBSITE is down, status code: '$STATUS' - $(date)" | mail -s "$SUBJECT" $EMAILID
fi
"-a"运算符也不能用:
if [ $STATUS -ne 200 ] -a [[ "$STRING" != "$VALUE" ]]
你还可以建议什么时候使用:
单方括号和双方括号 括号
?
要将命令的输出作为一个变量存储在sh/ksh/bash中,您可以使用任何一种方法
var=$(command)
or
var=`command`
这两种方法有什么区别?
我如何检查一个变量是否为空的Bash?
如果我想检查单个文件是否存在,我可以使用test -e filename或[-e filename]进行测试。
假设我有一个glob,我想知道是否有文件名与glob匹配的文件存在。glob可以匹配0个文件(在这种情况下,我不需要做任何事情),也可以匹配1个或多个文件(在这种情况下,我需要做一些事情)。我如何测试一个glob是否有任何匹配?(我不在乎有多少匹配,这将是最好的,如果我能做到这一点与一个if语句和没有循环(只是因为我发现最易读)。
(如果glob匹配多个文件,则test -e glob*失败。)
我经常必须登录到几个服务器中的一个,然后进入这些机器上的几个目录中的一个。目前我做的事情是这样的:
localhost ~]$ ssh somehost Welcome to somehost! somehost ~]$ cd /some/directory/somewhere/named/Foo somehost Foo]$
我有脚本,可以确定哪个主机和哪个目录,我需要进入,但我不知道如何做到这一点:
localhost ~]$ go_to_dir Foo Welcome to somehost! somehost Foo]$
有没有简单、聪明或任何方法可以做到这一点?