gpt4 book ai didi

linux - Bash 脚本 - 管理服务器导航

转载 作者:太空宇宙 更新时间:2023-11-04 10:49:20 24 4
gpt4 key购买 nike

我正在编写一些 bash 脚本,以便在管理应用程序时让生活更轻松。

脚本实际上只是将目录更改为我最常用的位置,这节省了大量时间。

目前,我的脚本在我的用户 .bash_profile 中,效果很好。

#SHORTENED COMMANDS
alias flushBash='source ~/.bash_profile'
alias editBash='sudo nano /home/gtec/.bash_profile'

#DIRECTORIES
alias gost='cd /var/www/location/of/directory'

在命令行中,我只需键入:gost,然后我就会进入我选择的目录。如果我是唯一一个使用服务器的人,那么上面的内容很好,但是,最终我将需要系统管理员等。所以我想我会编写一个脚本来帮助第三方。

所以我在 bash 中添加了一个脚本:

#SCRIPTS
alias go='. /home/me/scripts/go.sh'

想法是用户在命令行中输入:“go”,然后它会返回一个选项列表。

这是我目前所拥有的:

#!/bin/bash
clear
echo "Where do you want to go? home, anc-p, anc-s, auto-p, auto-s"
read -p "Enter a location :" location
if [$location = home]
then
cd /home/gtec
else
echo "Noting to do"
fi

当我运行上面的代码时,它输出:

Where do you want to go? home, anc-p, anc-s, auto-p, auto-s
Enter a location :home
[home: command not found
Noting to do

当我输入“home”时,它返回:home:command not found...

我在这里做错了什么?

最佳答案

根据 Etan Reisner 的评论更新了答案,原始不准确的答案保留在下面。

主要问题是语法问题:if 的方括号周围需要空格。此外,您应该始终引用您的变量,以防它们包含空白字符。解决方案:

#!/bin/bash
clear
echo "Where do you want to go? home, anc-p, anc-s, auto-p, auto-s"
read -p "Enter a location : " location
if [ "$location" = "home" ]
then
cd /home/gtec
else
echo "Nothing to do"
fi

原始的,不准确的答案供引用:

您的 if 中有 2 个错误:首先,您使用 = 分配而不是使用 == 进行测试,其次您缺少空格。它应该是这样的:

#!/bin/bash
clear
echo "Where do you want to go? home, anc-p, anc-s, auto-p, auto-s"
read -p "Enter a location :" location
if [ $location == home ]
then
cd /home/gtec
else
echo "Nothing to do"
fi

不准确之处在于 (1) 建议 == 是唯一的选项,以及 (2) 省略双引号。

关于linux - Bash 脚本 - 管理服务器导航,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31678402/

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