小编Kev*_*vin的帖子

循环遍历作为参数给出的 shell 数组

我正在尝试编写一个小帮助脚本,它将更改服务器上某些站点的权限和所有权。

现在,我可以传入 1 个站点,也可以通过简单地跳过该参数来完成所有操作。

我发现我需要能够应用到服务器上的多个站点,但不是全部,所以我尝试尝试通过以下方式传递数组:

SLIST=("my.site.com" "your.site.com")
./website-perms 644 755 kevin "${SLIST[@]}"
Run Code Online (Sandbox Code Playgroud)

但是,它只执行数组中的第一项 my.site.com

我该如何解决这个问题,以便我可以传入一系列网站?

完整代码

#!/bin/bash

# Done nightly, and copied to /usr/bin/
if [[ $EUID -ne 0 ]]; then
   echo "This script must be run as root" 1>&2
   exit 1
fi
if [ $# -eq 0 ]; then
    echo "usage: ./website-perms.sh fileperm folderperm owner (1|2) (1=kevin,2=www-data) (optional) Site Array"
    exit 1
fi

function chg_perms() {
    echo "find $1 -type f -exec chmod $2 {} \\";
    echo "find $1 …
Run Code Online (Sandbox Code Playgroud)

bash array shell-script

4
推荐指数
2
解决办法
3375
查看次数

VBox 机器列表?

我正在编写一个 bash 脚本来列出主机上的 VM,这样我就可以确保在主机重新启动时它们会被启动。

我的问题是获取我需要执行此操作的机器列表。

我的完整清单是:

"GYO DB Clone" {1f6e2518-ed20-4d71-a974-1d4823db4a81}
"GYO LB Clone" {6ba9a751-91ed-40a4-8a90-385559f67885}
"GYO MC Clone" {8bd0d243-887f-49dd-966f-6c104e451277}
"GYO Web Clone" {1229d75d-f046-4f3e-b15a-2d6c91b1e0d4}
"GYO DB 1" {5274eb5f-d0fe-46dd-8aaf-6d23728790b1}
"GYO LB 1" {5da93ec0-2f24-47f5-936b-390f4aacae8f}
"GYO MC 1" {3914335a-8199-4d2b-861d-09b8dfd8ea19}
"GYO MC 2" {b8ae5638-2e4a-4b8c-aec4-9cdf8b830e7f}
"GYO Web 1" {9e67266f-17ae-4de9-8445-8e4a06dd9ab7}
"GYO Web 2" {645453ba-8bfb-42af-8830-143ca10a655e}
"GYO Web 3" {8851950f-7671-434b-805a-7035d126f471}
"GYO Web 4" {03d74380-3a61-486f-a61f-bc9212b081a2}
Run Code Online (Sandbox Code Playgroud)

现在,我需要他们都火了......除了在clones

我目前code获得名单是:

sudo -H -u $VMUSER VBoxManage list vms | tr -s '\" {' '%{' | cut -d '%' -f3  | …
Run Code Online (Sandbox Code Playgroud)

bash virtual-machine shell-script virtualbox

3
推荐指数
1
解决办法
132
查看次数

Mac BigSur 上的 Bash 脚本语法错误:算术运算符无效

这里出现一个奇怪的错误。我有一些这样结构的json:

BACKUP_REPOS='''
[
    {"name":"my.server1", "hash":"server1-hash"},
    {"name":"my.server2", "hash":"server2-hash"},
    {"name":"my.server3", "hash":"server3-hash"}
]
'''
Run Code Online (Sandbox Code Playgroud)

我试图做的是根据使用jq以下功能生成一个可选菜单:

# generate the server menu
server_menu( ) {

    # hold some arrays
    declare -a _name _hash;

    while read -r _server _pw; do

        # hold the selected item
        _name[$_server]=$_server;
        _hash[$_server]=$_pw;

    # end the loop generation
    done < <( jq -rc '.[] | "\(.name) \(.hash)"' <<< "$BACKUP_REPOS" )

    # now loop the resultset
    select _server in "${!_name[@]}"; do 
        [ -n "$_server" ] && break;
    done;

    # return the …
Run Code Online (Sandbox Code Playgroud)

bash shell-script jq macos

3
推荐指数
1
解决办法
214
查看次数

标签 统计

bash ×3

shell-script ×3

array ×1

jq ×1

macos ×1

virtual-machine ×1

virtualbox ×1