我正在尝试编写一个简单的脚本(对于嵌入式系统),该脚本从网络挂载一个外部文件,然后在命令行上调用exit (它退出busybox终端并从新挂载的根目录引导系统)。问题是,当我从外壳脚本调用exit时,它会退出脚本,而不是外部终端。关于如何将exit命令发送到脚本之外,有什么提示吗?
我的代码看起来像这样:
#!/bin/bash
mount /mnt/root 1.2.3.4:/path/to/external/files -o nolock
exit # exits the script, not the outside filesystem!
执行简单的命令是非常直接的。但是,如果命令是脚本块而不是一行代码,那么最好的编写方法是什么,例如:
exec {
command => 'for i in vars
do
echo $i
more-statements
done';
}
我能想到的几种方法是:
用适当的转义方式编写脚本块以使其正常工作(不是一个非常整洁的选项)
用file.sh编写脚本块并在命令中执行它
还有其他选择吗?
基本上,我已经为作业编写了一个shell脚本,这个作业很好,但是我对退出有问题。实际上,脚本从用户那里读取数字,直到它读取一个负数,然后执行一些输出。我的脚本设置为退出并输出错误代码时,它只收到一个数字,这就是问题所在。
守则如下:
if test $number -eq $number >dev/null 2>&1
then
"do stuff"
else
echo "There was an error"
exit
问题是,我们必须使用脚本将程序作为文本文件提交,每当我尝试编写我的程序并测试错误情况时,它也退出脚本。
我已经编写了一个shell脚本,其中我编写了一个rvm-shell命令。问题是此命令后的任何行都不会执行。脚本如下:
#!/bin/bash
set x
rvm-shell ruby-1.9.3-p448@global //after this line not anything get executed
echo $? //not get executed
clear //not get executed
rails s //not get executed which i want to run