gpt4 book ai didi

linux - bash shell脚本中初始化动态变量(可变变量)

转载 作者:太空狗 更新时间:2023-10-29 11:30:30 28 4
gpt4 key购买 nike

我正在通过 bash shell 使用 PHP CLI。请查看Manipulating an array (printed by php-cli) in shell script了解详情。

在下面的 shell 代码中,我能够回显从 PHP 脚本中获取的 key- value 对。

IFS=":"

# parse php script output by read command
php $PWD'/test.php' | while read -r key val; do
echo $key":"$val
done

以下是此操作的输出 -

BASE_PATH:/path/to/project/root
db_host:localhost
db_name:database
db_user:root
db_pass:root

现在我只想在 while 循环内启动动态变量,这样我就可以像 $BASE_PATH 一样使用它们,其值为 '/path/to/project/root' , $db_host'localhost'

我有 PHP 背景。我想要类似 PHP 的 $$key = $val

最佳答案

使用 eval引入了必须考虑的安全风险。使用 declare 更安全:

# parse php script output by read command
while IFS=: read -r key val; do
echo $key":"$val
declare $key=$val
done < <(php $PWD'/test.php')

如果您使用的是 Bash 4,则可以使用关联数组:

declare -A some_array
# parse php script output by read command
while IFS=: read -r key val; do
echo $key":"$val
some_array[$key]=$val
done < <(php $PWD'/test.php')

使用进程替换 <()并将其重定向到 donewhile loop 阻止创建子shell。仅为 read 设置 IFS命令消除了保存和恢复其值的需要。

关于linux - bash shell脚本中初始化动态变量(可变变量),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4385097/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com