我写了一个小脚本,它允许我通过 SSHFS 连接两个服务器。该脚本设置变量,或者如果未输入任何内容,则输入默认值,即 SSH 端口 22。
我想创建一个脚本,允许我输入 1、2 或 3,然后连接到
- 我输入变量的 SSHFS 脚本
- SSHFS 服务器 1
- SSHFS 服务器 2
主要目的是每次通过 SSHFS 连接时,我不需要输入用户名、密码、服务器名称等。
构造这个的最佳方式是什么,这样我就不必重复我的 SSHFS 行
变量供给此行。
sshfs -o allow_other,defer_permissions -o volname=$USER@$SERVERNAME $USER@$SERVERNAME:$REMOTEMOUNT $LOCALMOUNT -p$PORTNUMBER
如果我使用 switch case,我是否需要将其包含在每个 switch case 中,或者是否有某种方式来构造它以便这一行只包含一次。
答案1
首先,不要使用$USER
。这是一个默认的环境变量,用于保存当前用户的用户名。如果用户名在所有服务器和运行脚本的机器上都相同,那么没问题。但如果不同,请使用其他名称。通常,避免在 bash 中使用大写变量名,因为默认的保留变量名都是大写的。
也就是说,你可以做这样的事情:
#!/bin/sh
case $1 in
1)
user="user1"
servername="server1"
remotemount="remote1"
localmount="local1"
portnumber="port1"
;;
2)
user="user2"
servername="server2"
remotemount="remote2"
localmount="local2"
portnumber="port2"
;;
3)
user="user3"
servername="server3"
remotemount="remote3"
localmount="local3"
portnumber="port3"
;;
*)
echo "Please use 1, 2 or 3"
exit 1
;;
esac
echo sshfs -o allow_other,defer_permissions -o volname=$user@$servername $user@$servername:$remotemount $localmount -p$portnumber
然后,运行脚本并提供或1
作为参数:2
3
foo.sh 2