如果其中任何一个失败,如何让这个脚本检查命令的状态并退出:
#!/bin/sh
echo JFFS2 Preparation
cd /root
/root/config 1 > /root/formatted
if grep "PAR_JFFS2_FORMATTED = -1" /root/formatted; then
echo Need to Format MTD2
rm -f /root/formatted
flash_eraseall -j /dev/mtd2
echo Marking file system as formatted
当需要作为特定用户运行时,我有一个shell脚本。所以我将该脚本命名为如下所示,
su - testuser -c "/root/check_package.sh | tee -a /var/log/check_package.log"
因此,在此之后,当我检查最后一个执行退出代码时,即使该脚本失败,它也总是返回0。
我尝试了下面的一些方法,但也没有帮助。
su - testuser -c "/root/check_package.sh | tee -a /var/log/check_package.log && echo $? || echo $?&
我目前正在使用bash创建一个数据库。我想添加一个"and“函数。此函数将搜索两个内容,并且只返回匹配这两个搜索的内容。我该如何做到这一点?
下面是我的代码:
#!/bin/bash
clear
#return all
function all {
cat people.dat
}
#return some
function search {
grep -i "$SEARCH" people.dat || echo "search returned nothing"
}
#or search
function or {
egr
我在一个全新的Ubuntu14.04.2上有一个名为test.sh的脚本,它可以这样做:
#!/bin/sh
set -o errexit
# Start by building the box
docker build -t dcyclebox-test .
# Test nginx
docker run dcyclebox-test bash -c 'nginx -v' && echo '[test] nginx works'
echo '[status] end of test script'
nginx命令不存在,因
似乎不知何故,我对bash的了解并不是很好,因为这么多年后我发现了一些奇怪的东西:
#!/bin/bash
set -e
# so we expect to exit with error code on first failure
false || true
echo "ok, expected to reach this place"
false && true
echo "why am I here?"
现在,我之所以这样问,是因为我发现为什么尝试在bash脚本中使用gerrit cherry pick代码片段,并且令我惊讶的是,当第一
请找到下面的脚本。当我运行它./myscript.sh时,我会得到终端和日志文件中的所有echo语句。但在执行后,它不会退出或返回到终端请帮助。我对脚本编程是个新手。
#!/bin/sh
process() {
echo "Start..."
echo "Stop..."
exit 10
}
until [ $? -eq 10 ];
do
process | tee -a /home/temp/myLog.log
done
我在运行脚本时创建了一个日志文件。
我想检查同一个日志文件是否有“Msg.”的任何消息并退出代码,除了这个'Msg 2714‘。
因此,我在脚本中添加了以下代码:
Some line of code before
rc1=`grep -v 'Msg 2714' $Logfilename`
rc2=`grep -i 'Msg' $rc1`
if [ $rc2 -ne "" ]
then
echo "Error message, some query has failed"
exit
fi
但是,我遇到了g
我有一个名为deployment.sh的子脚本和一个名为deloy_base.sh的父脚本。在父deploy_base.sh上,iam通过其他服务器上的ssh调用子脚本。实际上,子脚本正在执行部署过程。如果子脚本中的任何命令失败,错误状态应该发送到父脚本,以便我可以根据子脚本的成功或失败错误代码发送电子邮件。
现在,不管子脚本中的任何命令失败了,它总是会成功。请帮帮忙。
ssh user@10.0.0.1 "/home/scripts/deployment.sh" DEV 2>&1 | tee /home/release/DEV.log
if [ $?
Python 3.3.3 Windows 7
Here is the full stack:
Traceback (most recent call last):
File "Blah\MyScript.py", line 578, in Call
output = process.communicate( input=SPACE_KEY, timeout=600 )
File "C:\Python33\lib\subprocess.py", line 928, in communicate
stdout, stderr = self._
我们的目标是创建一个简单的非侵入性包装器,将stdin和stdout跟踪到stderr:
#!/bin/bash
tee /dev/stderr | ./script.sh | tee /dev/stderr
exit ${PIPESTATUS[1]}
测试脚本script.sh
#!/bin/bash
echo asd
sleep 1
exit 4
但是,当脚本退出时,它不会终止包装器。可能的解决方案是结束管道的第二个命令中的第一个tee:
#!/bin/bash
# Second subshell will get the PID of the first one through