我把这个字符串存储在一个变量中:
IN="bla@some.com;john@home.com"
Run Code Online (Sandbox Code Playgroud)
现在我想通过;分隔符拆分字符串,以便我有:
ADDR1="bla@some.com"
ADDR2="john@home.com"
Run Code Online (Sandbox Code Playgroud)
我不一定需要ADDR1和ADDR2变量.如果它们是阵列的元素甚至更好.
根据以下答案的建议,我最终得到了以下内容,这就是我所追求的:
#!/usr/bin/env bash
IN="bla@some.com;john@home.com"
mails=$(echo $IN | tr ";" "\n")
for addr in $mails
do
echo "> [$addr]"
done
Run Code Online (Sandbox Code Playgroud)
输出:
> [bla@some.com]
> [john@home.com]
Run Code Online (Sandbox Code Playgroud)
有一个涉及设置Internal_field_separator(IFS)的解决方案;.我不确定该答案发生了什么,你如何重置IFS为默认值?
RE:IFS解决方案,我试过这个并且它可以工作,我保持旧的IFS然后恢复它:
IN="bla@some.com;john@home.com"
OIFS=$IFS
IFS=';'
mails2=$IN
for x in $mails2
do
echo "> [$x]"
done
IFS=$OIFS
Run Code Online (Sandbox Code Playgroud)
顺便说一句,我试过的时候
mails2=($IN)
Run Code Online (Sandbox Code Playgroud)
我只是在循环打印时得到第一个字符串,没有括号围绕$IN它工作.
我知道如何在python中做到这一点,只是用
line = db_file.readline()
ll=string.split(line)
Run Code Online (Sandbox Code Playgroud)
但我怎样才能在bash中做同样的事情呢?是否真的有可能以这么简单的方式做到这一点?
我正在尝试将一个包含三个值的数组分配给变量,如果尚未使用该行分配的话
: ${SEAFILE_MYSQL_DB_NAMES:=(ccnet-db seafile-db seahub-db)}
不幸的是,回声${SEAFILE_MYSQL_DB_NAMES[@]}结果(ccnet-db seafile-db seahub-db)并${SEAFILE_MYSQL_DB_NAMES[2]}没有打印任何内容.看来,该值已被解释为字符串而不是数组.有什么方法可以让我的脚本以这种方式分配数组吗?
这个问题出现在Debian Jessie上,有bash 4.3.30(如果重要的话,在docker容器中).有趣的是,相同的代码可以在Ubuntu 16.04上使用bash版本4.3.42,它可以像我期望的那样作为数组处理.
我有一个私人 git 服务器,有一个用户git和 ssh 密钥身份验证。目前,我是唯一一个使用它的人,但我想添加更多人,我希望每个人都使用用户git连接到服务器并执行git clone,git push等等。如果所有存储库都是“公共”,那么我知道如何解决这。但例如我想要一个私有存储库,我仍将使用git clone git@server:repo我的 SSH 密钥进行克隆,但我不希望其他用户能够使用他们的 SSH 密钥来克隆它。
我检查了有关设置服务器的 git-scm 文档(这对公共存储库很有帮助),这文章,但是这篇文章似乎只能解决私有存储库的问题。
TLDR:当您在 GitHub 上克隆存储库时,您会说git clone git@github.com:user/repo您的 git 用户名和 ssh 密钥将被发送过来。现在,根据您是否拥有此存储库的权限,您可以克隆它,否则则不能。所以基本上,每个人都在表面上使用git用户,但在幕后正在进行一些授权。例如,GitHub 如何处理这个问题?
我正在尝试从一个文件中读取数据,该文件有多行,每行都有 3 个我想要分配给变量并使用的信息。
我想出了如何在终端上简单地显示它们,但无法弄清楚如何实际将它们分配给变量。
while read i
do
for j in $i
do
echo $j
done
done < ./test.txt
Run Code Online (Sandbox Code Playgroud)
测试.txt:
1 2 3
a b c
Run Code Online (Sandbox Code Playgroud)
所以我想读取外循环中的行,然后分配 3 个变量,然后使用它们,然后再进入下一行。
我猜我必须在没有内部循环的情况下读取行的值,但我现在无法弄清楚。
希望有人能指出我正确的方向。