避免重复Bash中的变量设置

发布于 2025-01-31 17:50:32 字数 1476 浏览 1 评论 0原文

在这里bash newbie!我如何避免重复“ passgen = $(</dev/dev/urandom tr -dc _a-zaz-0-9 | head -c12)”?

sqlite variables.db "create table passwords (name TEXT PRIMARY KEY, value TEXT);"
PASSGEN=$(</dev/urandom tr -dc _A-Z-a-z-0-9 | head -c12)
sqlite variables.db "insert into passwords (name,value) values ('BOOKSTACK_MYSQL_ROOT', '$PASSGEN');"
PASSGEN=$(</dev/urandom tr -dc _A-Z-a-z-0-9 | head -c12)
sqlite variables.db "insert into passwords (name,value) values ('BOOKSTACK_MYSQL', '$PASSGEN');"
PASSGEN=$(</dev/urandom tr -dc _A-Z-a-z-0-9 | head -c12)
sqlite variables.db "insert into passwords (name,value) values ('BORG_PASSPHRASE', '$PASSGEN');"
PASSGEN=$(</dev/urandom tr -dc _A-Z-a-z-0-9 | head -c12)
sqlite variables.db "insert into passwords (name,value) values ('CODE_SERVER_PASS', '$PASSGEN');"
PASSGEN=$(</dev/urandom tr -dc _A-Z-a-z-0-9 | head -c12)
sqlite variables.db "insert into passwords (name,value) values ('CODE_SERVER_SUDO_PASS', '$PASSGEN');"
PASSGEN=$(</dev/urandom tr -dc _A-Z-a-z-0-9 | head -c12)
sqlite variables.db "insert into passwords (name,value) values ('EXPORTARR_TOKEN', '$PASSGEN');"
PASSGEN=$(</dev/urandom tr -dc _A-Z-a-z-0-9 | head -c12)
sqlite variables.db "insert into passwords (name,value) values ('FLAME_PASS', '$PASSGEN');"
PASSGEN=$(</dev/urandom tr -dc _A-Z-a-z-0-9 | head -c12)
sqlite variables.db "insert into passwords (name,value) values ('FLIGHTAIRMAP_INSTALL_PASS', '$PASSGEN');"

Bash newbie here! How do I avoid repeating the "PASSGEN=$(</dev/urandom tr -dc _A-Z-a-z-0-9 | head -c12)" each time in this bash script excerpt?

sqlite variables.db "create table passwords (name TEXT PRIMARY KEY, value TEXT);"
PASSGEN=$(</dev/urandom tr -dc _A-Z-a-z-0-9 | head -c12)
sqlite variables.db "insert into passwords (name,value) values ('BOOKSTACK_MYSQL_ROOT', '$PASSGEN');"
PASSGEN=$(</dev/urandom tr -dc _A-Z-a-z-0-9 | head -c12)
sqlite variables.db "insert into passwords (name,value) values ('BOOKSTACK_MYSQL', '$PASSGEN');"
PASSGEN=$(</dev/urandom tr -dc _A-Z-a-z-0-9 | head -c12)
sqlite variables.db "insert into passwords (name,value) values ('BORG_PASSPHRASE', '$PASSGEN');"
PASSGEN=$(</dev/urandom tr -dc _A-Z-a-z-0-9 | head -c12)
sqlite variables.db "insert into passwords (name,value) values ('CODE_SERVER_PASS', '$PASSGEN');"
PASSGEN=$(</dev/urandom tr -dc _A-Z-a-z-0-9 | head -c12)
sqlite variables.db "insert into passwords (name,value) values ('CODE_SERVER_SUDO_PASS', '$PASSGEN');"
PASSGEN=$(</dev/urandom tr -dc _A-Z-a-z-0-9 | head -c12)
sqlite variables.db "insert into passwords (name,value) values ('EXPORTARR_TOKEN', '$PASSGEN');"
PASSGEN=$(</dev/urandom tr -dc _A-Z-a-z-0-9 | head -c12)
sqlite variables.db "insert into passwords (name,value) values ('FLAME_PASS', '$PASSGEN');"
PASSGEN=$(</dev/urandom tr -dc _A-Z-a-z-0-9 | head -c12)
sqlite variables.db "insert into passwords (name,value) values ('FLIGHTAIRMAP_INSTALL_PASS', '$PASSGEN');"

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

玩套路吗 2025-02-07 17:50:32

一个简单的解决方案是编写一个函数:

function generate_password {
    </dev/urandom tr -dc _A-Z-a-z-0-9 | head -c12
}

然后,您的代码段变为:

sqlite variables.db "create table passwords (name TEXT PRIMARY KEY, value TEXT);"
sqlite variables.db "insert into passwords (name,value) values ('BOOKSTACK_MYSQL_ROOT', '$(generate_password)');"
sqlite variables.db "insert into passwords (name,value) values ('BOOKSTACK_MYSQL', '$(generate_password)');"
sqlite variables.db "insert into passwords (name,value) values ('BORG_PASSPHRASE', '$(generate_password)');"
# ...

A simple solution would be to write a function:

function generate_password {
    </dev/urandom tr -dc _A-Z-a-z-0-9 | head -c12
}

Then, your code snippet becomes:

sqlite variables.db "create table passwords (name TEXT PRIMARY KEY, value TEXT);"
sqlite variables.db "insert into passwords (name,value) values ('BOOKSTACK_MYSQL_ROOT', '$(generate_password)');"
sqlite variables.db "insert into passwords (name,value) values ('BOOKSTACK_MYSQL', '$(generate_password)');"
sqlite variables.db "insert into passwords (name,value) values ('BORG_PASSPHRASE', '$(generate_password)');"
# ...
浪推晚风 2025-02-07 17:50:32

一种方法是将循环用于表插入。尝试此 shellCheck -clean代码:

sqlite variables.db "create table passwords (name TEXT PRIMARY KEY, value TEXT);"

for name in BOOKSTACK_MYSQL_ROOT BOOKSTACK_MYSQL BORG_PASSPHRASE    \
            CODE_SERVER_PASS CODE_SERVER_SUDO_PASS EXPORTARR_TOKEN  \
            FLAME_PASS FLIGHTAIRMAP_INSTALL_PASS
do
    passgen=$(</dev/urandom tr -dc _A-Z-a-z-0-9 | head -c12)
    sqlite variables.db "insert into passwords (name,value) values ('$name', '$passgen');"
done

One way to do it is to use a loop for the table insertions. Try this Shellcheck-clean code:

sqlite variables.db "create table passwords (name TEXT PRIMARY KEY, value TEXT);"

for name in BOOKSTACK_MYSQL_ROOT BOOKSTACK_MYSQL BORG_PASSPHRASE    \
            CODE_SERVER_PASS CODE_SERVER_SUDO_PASS EXPORTARR_TOKEN  \
            FLAME_PASS FLIGHTAIRMAP_INSTALL_PASS
do
    passgen=$(</dev/urandom tr -dc _A-Z-a-z-0-9 | head -c12)
    sqlite variables.db "insert into passwords (name,value) values ('$name', '$passgen');"
done
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文