gpt4 book ai didi

linux - 协助使用简单的 Bash 脚本

转载 作者:IT王子 更新时间:2023-10-29 00:55:41 25 4
gpt4 key购买 nike

我正在尝试编写我的第一个 Bash 脚本。我正在尝试创建一个脚本来启动我的主要 vagrant VM,以便我可以从任何目录启动它。这是我目前所拥有的:

#!/bin/bash
if [[ -n "$1" ]];
then
if [["$1" == "up"]];
then cd /home/user/DevEnv && vagrant up;
elif [["$1" == "halt"]];
then cd /home/user/DevEnv && vagrant halt;
fi
else
echo "Must pass up or halt to script";
fi

当我运行它时,我得到以下输出

user@Debian ~ $ dev
Must pass up or halt to script
user@Debian ~ $ dev up
/home/user/bin/dev: line 5: [[up: command not found
/home/user/bin/dev: line 7: [[up: command not found
user@Debian ~ $ dev halt
/home/user/bin/dev: line 5: [[halt: command not found
/home/user/bin/dev: line 7: [[halt: command not found

最后的 else 似乎在起作用,但是 then 之后的命令似乎在 vagrant 之后被破坏了。我假设我做错了一些简单的事情。我最终想将参数作为一个变量,然后将变量传递给 vagrant,但现在看起来更复杂。

最佳答案

您需要空格将 [[]] 与它们之间的代码分开。例如:

elif [[ "$1" == "halt" ]];
then cd /home/user/DevEnv && vagrant halt;
fi

这也是 case 语句的一个很好的用法:

case "$1" in 
up)
cd /home/user/DevEnv && vagrant up
;;
halt)
cd /home/user/DevEnv && vagrant halt
;;
*)
echo "Must pass up or halt to script"
;;
esac

关于linux - 协助使用简单的 Bash 脚本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16655488/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com