我正在尝试编写一个简单的脚本(对于嵌入式系统),该脚本从网络挂载一个外部文件,然后在命令行上调用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!
这里我有一个脚本,它导出一些必要的路径在Linux中。运行此脚本后,我必须运行一些其他脚本。
我有两个脚本
1 import.sh = importing paths
2 main.sh = this script do something with HCI (use for Bluetooth purpose).
当我运行./import.sh,然后运行./main.sh时,它就会给出错误。当我运行. ./import.sh,然后运行./main.sh时,它工作得很好。
那么./import.sh和. ./import.sh之间的区别是什么呢
如果我以超级用户身份运行脚本,会发生什么
我使用SSH安全Shell客户端连接到服务器并运行我的脚本。
我想在某些情况下停止脚本,所以当我使用exit时,不仅脚本会停止,而且所有客户端都会断开与服务器的连接!以下是代码:
if [[ `echo $#` -eq 0 ]]; then
echo "Missing argument- must to get a friend list";
exit
fi
for user in $*; do
if [[ !(-f `echo ${user}.user`) ]]; then
echo "
我有var.sh
name="John"
age="29"
我还有main.sh
eval "var.sh"
echo "My name is $name"
当我跑的时候,我一直在
⚡️ Desktop bash main.sh
main.sh: line 1: var.sh: command not found
My name is
将本地bash文件导入另一个bash文件的最佳实践是什么?
有办法在Mac、Linux和Windows上工作吗?
在下面的脚本中,当执行if语句中的代码时,用户将从bash注销。为什么会这样呢?
#!/bin/sh
if [ -z $1 ]; then
echo "1"
read w
exit 1
fi
if [ "$#" -gt "1" ]; then
echo "1"
read w
exit 2
fi
export PTSUSER=$1.
<some more code>
我正在开发一个sysprep样式的脚本,该脚本取消了机器的标识,并使其为模板化做好了准备。我想要执行的最后一个任务(在关闭之前)是为根用户清除bash历史记录。我可以执行
HISTFILE=~/.bash_history
set -o history
>$HISTFILE
history -c
从剧本里。问题是存储在内存中的执行交互根会话的历史,在该会话结束时,脚本被写入$HISTFILE。我希望sysprep是执行的最后一件事(脚本中的最后一行是shutdown now -h)。
如果有必要,我可以在关闭之前手动清除交互式会话中的历史记录,但是我想让它成为我的脚本的一部分。有什么建议吗
我在Linux 19上,我对Makefiles完全陌生。
以下是有问题的部分:
[ $(shell id --user) -eq 0 ] && ( echo && echo "distrib target has to be run as normal user" && echo && exit 1 )
这会引发此错误:
[ 1000 -eq 0 ] && ( echo && echo "distrib target has to be run as normal user&
osx中的bash脚本不退出脚本。我已经更改了设置(如建议的,这样终端中的写出口就会关闭窗口),如果我在终端中写入它,会有什么原因呢?在改变设置后,我重新启动了终端和mac,看看这是否解决了问题。但是退出位置(S) nr 1或在脚本的末尾不工作。
#!/bin/bash
PATH=/opt/local/bin:/opt/local/sbin:$PATH
read -p "What do you want to do?"
if test "$pass" = "f"
then
sh ~/f.sh
exi