相关疑难解决方法(0)

从密钥/对值文件中设置环境变量

TL; DR:如何将一组键/值对从文本文件导出到shell环境中?


为了记录,下面是问题的原始版本,带有示例.

我正在用bash编写一个脚本,用于解析某个文件夹中包含3个变量的文件,这是其中之一:

MINIENTREGA_FECHALIMITE="2011-03-31"
MINIENTREGA_FICHEROS="informe.txt programa.c"
MINIENTREGA_DESTINO="./destino/entrega-prac1"
Run Code Online (Sandbox Code Playgroud)

该文件存储在./conf/prac1中

我的脚本minientrega.sh然后使用以下代码解析文件:

cat ./conf/$1 | while read line; do
    export $line
done
Run Code Online (Sandbox Code Playgroud)

但是当我minientrega.sh prac1在命令行中执行时,它不会设置环境变量

我也试过使用,source ./conf/$1但同样的问题仍然适用

也许有其他方法可以做到这一点,我只需要使用我传递的文件的环境变量作为我的脚本的参数.

variables bash environment-variables

425
推荐指数
28
解决办法
31万
查看次数

我刚刚分配了一个变量,但echo $ variable显示了其他内容

以下是一系列echo $var可以显示与刚刚分配的值不同的值的情况.无论指定的值是"双引号","单引号"还是不引用,都会发生这种情况.

如何让shell正确设置我的变量?

星号

预期的输出是/* Foobar is free software */,但我得到一个文件名列表:

$ var="/* Foobar is free software */"
$ echo $var 
/bin /boot /dev /etc /home /initrd.img /lib /lib64 /media /mnt /opt /proc ...
Run Code Online (Sandbox Code Playgroud)

方括号

期望值是[a-z],但有时我会得到一个字母!

$ var=[a-z]
$ echo $var
c
Run Code Online (Sandbox Code Playgroud)

换行(换行符)

预期值是一个单独的行列表,但所有值都在一行!

$ cat file
foo
bar
baz

$ var=$(cat file)
$ echo $var
foo bar baz
Run Code Online (Sandbox Code Playgroud)

多个空间

我期望一个精心对齐的表头,但是多个空格要么消失要么折叠成一个!

$ var="       title     |    count"
$ echo $var
title | count
Run Code Online (Sandbox Code Playgroud)

标签

我期望两个制表符分隔值,但我得到两个空格分隔值!

$ …
Run Code Online (Sandbox Code Playgroud)

bash shell sh quoting

87
推荐指数
4
解决办法
15万
查看次数

标签 统计

bash ×2

environment-variables ×1

quoting ×1

sh ×1

shell ×1

variables ×1