可能重复:
出错时自动退出bash shell脚本
如何在第一次命令失败时停止bash,而不是在我的代码中放入这样的东西?
some_prog || exit 1
some_other_prog || exit 1
Run Code Online (Sandbox Code Playgroud) 是否有客观上更好的方法在bash脚本中创建临时文件?
我通常只是将它们命名为我想到的任何内容,例如tempfile-123,因为当脚本结束时它将被删除.除了覆盖当前文件夹中可能的tempfile-123之外,还有什么不利吗?或者以更仔细的方式创建临时文件有什么好处?
我正在构建一个具有如下if
函数的Shell脚本:
if jarsigner -verbose -keystore $keyst -keystore $pass $jar_file $kalias
then
echo $jar_file signed sucessfully
else
echo ERROR: Failed to sign $jar_file. Please recheck the variables
fi
...
Run Code Online (Sandbox Code Playgroud)
我希望在显示错误消息后完成脚本的执行.我怎么能这样做?
我有以下shell脚本.目的是循环到目标文件的每一行(其路径是脚本的输入参数)并对每一行进行操作.现在,它似乎只适用于目标文件中的第一行,并在该行被处理后停止.我的剧本有什么问题吗?
#!/bin/bash
# SCRIPT: do.sh
# PURPOSE: loop thru the targets
FILENAME=$1
count=0
echo "proceed with $FILENAME"
while read LINE; do
let count++
echo "$count $LINE"
sh ./do_work.sh $LINE
done < $FILENAME
echo "\ntotal $count targets"
Run Code Online (Sandbox Code Playgroud)
在do_work.sh
,我运行了几个ssh
命令.
我在我的bash函数中使用"exit 1"语句来终止整个脚本,它工作正常:
function func()
{
echo "Goodbye"
exit 1
}
echo "Function call will abort"
func
echo "This will never be printed"
Run Code Online (Sandbox Code Playgroud)
但后来我意识到,当调用它时它不起作用:
res=$(func)
Run Code Online (Sandbox Code Playgroud)
据我所知,我创建了一个子shell,"退出1"中止了子shell而不是主要的....
但有没有办法编写一个中止整个执行的函数,无论它如何被调用?我只需要获得真正的返回值(由函数回应).
我想知道下面命令在bash中做了什么.
我可以使用set的其他选项是什么,它们是什么意思.