Bash 只提取特定文件名然后将其用于变量的脚本
Bash script that only extract specific file name and then use it to a variable
我正在尝试创建一个 bash 脚本来提取“特定”文件名,然后在变量中使用?
换句话说,我是 运行 多个虚拟机实例,每个虚拟机实例在自己的目录中都有自己的配置文件,每个虚拟机实例都被命名为 (POD##)
# cd /home/vMX-ENV/vMX-21.1R1/config/
# ls
pod10 pod8 pod9 samples vmx.conf vmx-junosdev.conf
我有一个 bash 脚本,它根据虚拟机的配置文件运行每个虚拟机
#!/bin/bash
## Activate Python Virtual Environment
source /home/vMX-ENV/bin/activate
### Commands used to /start/ vmx VM [Repeat per each POD]
#[Pod 8]
./vmx.sh -lv --start --cfg config/pod8/vmx1.conf
#[Pod 9]
./vmx.sh -lv --start --cfg config/pod9/vmx1.conf
#[Pod 9]
./vmx.sh -lv --start --cfg config/pod10/vmx1.conf
#...
由于我有更多服务器和其他 Pod 编号,我想自动搜索这些文件目录,以便 bash 脚本知道要查找哪个目录,而无需在脚本上实际手动输入路径位置,例如:如果我的服务器中有一个名为 POD8 的目录,我希望 bash 脚本为每个 pod
自动提取该路径
而不是在脚本中包含 ./vmx.sh -lv --start --cfg config/pod8/vmx1.conf
我想要 ./vmx.sh -lv --start --cfg config/{VARIABLE that extracts foldername}/vmx1.conf
之类的东西,如果我有 Pod 9,那么路径会自动更改为 9。
到目前为止,我能够使用 basename 提取路径文件,但我在其余部分没有成功:(,有什么想法吗?
在 "Fravadona" 的大力帮助下,我得以解决我的问题,这是我的 运行 脚本,它可以完美运行!
#!/bin/bash
## Activate Python Virtual Environment
source /home/vMX-ENV/bin/activate
vmx1.conf () {
echo -e "\e[42mStarting Juniper vMX1 Routers\e[0m"
for vmx1_conf in config/pod*/vmx1.conf
do ./vmx.sh -lv --start --cfg "$vmx1_conf"
done
vmx2.conf
}
vmx2.conf () {
echo -e "\e[42mStarting Juniper vMX2 Routers\e[0m"
for vmx2_conf in config/pod*/vmx2.conf
do ./vmx.sh -lv --start --cfg "$vmx2_conf"
done
vr-devices.conf
}
#vr-devices.conf () {
echo -e "\e[42mStarting Juniper vr-vMX Routers\e[0m"
for vr_conf in config/pod*/vr-device.conf
do ./vmx.sh -lv --start --cfg "$vr_conf"
done
echo -e "\e[42mAll vMX Instances Have Started Sucessfully\e[0m"
bindings.conf
}
bindings.conf () {
echo -e "\e[42mStarting Juniper vMX Bindings\e[0m"
for bind_conf in config/pod*/vmx-junos-dev.conf
do ./vmx.sh -lv --start --cfg "$bind_conf"
done
echo -e "\e[42mJuniper Bindings deployed Sucessfully\e[0m"
./link-br.sh
}
我正在尝试创建一个 bash 脚本来提取“特定”文件名,然后在变量中使用?
换句话说,我是 运行 多个虚拟机实例,每个虚拟机实例在自己的目录中都有自己的配置文件,每个虚拟机实例都被命名为 (POD##)
# cd /home/vMX-ENV/vMX-21.1R1/config/
# ls
pod10 pod8 pod9 samples vmx.conf vmx-junosdev.conf
我有一个 bash 脚本,它根据虚拟机的配置文件运行每个虚拟机
#!/bin/bash
## Activate Python Virtual Environment
source /home/vMX-ENV/bin/activate
### Commands used to /start/ vmx VM [Repeat per each POD]
#[Pod 8]
./vmx.sh -lv --start --cfg config/pod8/vmx1.conf
#[Pod 9]
./vmx.sh -lv --start --cfg config/pod9/vmx1.conf
#[Pod 9]
./vmx.sh -lv --start --cfg config/pod10/vmx1.conf
#...
由于我有更多服务器和其他 Pod 编号,我想自动搜索这些文件目录,以便 bash 脚本知道要查找哪个目录,而无需在脚本上实际手动输入路径位置,例如:如果我的服务器中有一个名为 POD8 的目录,我希望 bash 脚本为每个 pod
自动提取该路径 而不是在脚本中包含 ./vmx.sh -lv --start --cfg config/pod8/vmx1.conf
我想要 ./vmx.sh -lv --start --cfg config/{VARIABLE that extracts foldername}/vmx1.conf
之类的东西,如果我有 Pod 9,那么路径会自动更改为 9。
到目前为止,我能够使用 basename 提取路径文件,但我在其余部分没有成功:(,有什么想法吗?
在 "Fravadona" 的大力帮助下,我得以解决我的问题,这是我的 运行 脚本,它可以完美运行!
#!/bin/bash
## Activate Python Virtual Environment
source /home/vMX-ENV/bin/activate
vmx1.conf () {
echo -e "\e[42mStarting Juniper vMX1 Routers\e[0m"
for vmx1_conf in config/pod*/vmx1.conf
do ./vmx.sh -lv --start --cfg "$vmx1_conf"
done
vmx2.conf
}
vmx2.conf () {
echo -e "\e[42mStarting Juniper vMX2 Routers\e[0m"
for vmx2_conf in config/pod*/vmx2.conf
do ./vmx.sh -lv --start --cfg "$vmx2_conf"
done
vr-devices.conf
}
#vr-devices.conf () {
echo -e "\e[42mStarting Juniper vr-vMX Routers\e[0m"
for vr_conf in config/pod*/vr-device.conf
do ./vmx.sh -lv --start --cfg "$vr_conf"
done
echo -e "\e[42mAll vMX Instances Have Started Sucessfully\e[0m"
bindings.conf
}
bindings.conf () {
echo -e "\e[42mStarting Juniper vMX Bindings\e[0m"
for bind_conf in config/pod*/vmx-junos-dev.conf
do ./vmx.sh -lv --start --cfg "$bind_conf"
done
echo -e "\e[42mJuniper Bindings deployed Sucessfully\e[0m"
./link-br.sh
}