Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/bash/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Linux Bash未将文件读取到变量_Linux_Bash - Fatal编程技术网

Linux Bash未将文件读取到变量

Linux Bash未将文件读取到变量,linux,bash,Linux,Bash,我有一个简单的bash脚本 #!/bin/bash TEXT=$(<"$(pwd)/data/test.json") echo "$TEXT" 它给了我以下输出 { "data": true } 为什么bash脚本不起作用 编辑: 我的bash版本是gnubash,版本4.3.48(1)-发行版(x86_64-pc-linux-GNU)要读取变量中的文件,只需使用cat命令即可 TEXT="$(cat $(pwd)/data/test.json)" 双引号确保保留换行符 echo "

我有一个简单的bash脚本

#!/bin/bash
TEXT=$(<"$(pwd)/data/test.json")
echo "$TEXT"
它给了我以下输出

{ "data": true }
为什么bash脚本不起作用

编辑:


我的bash版本是gnubash,版本4.3.48(1)-发行版(x86_64-pc-linux-GNU)要读取变量中的文件,只需使用
cat
命令即可

TEXT="$(cat $(pwd)/data/test.json)"
双引号确保保留换行符

echo "$TEXT"

你是如何执行你的脚本的?您正在键入
sh script.sh
?确保您执行了
/script.sh
,以便它使用
/bin/bash
而不是
/bin/sh

使用“bash{scriptname}”或“/{scriptname}”

此外,您不必通过cat或echo来设置var:
VAR=$(无法复制。如果您将shebang更改为
#!/bin/bash-x
@anubhava,那么输出是什么?如果您的意思是在终端中运行时,它输出
{“data”:true}
@FredrikPihl输出仍然只是一个换行符
文件test.json的输出是什么?我认为dos lineendings…FWIW,prepending
$(pwd)
是不必要的。
“data/test.json”
也可以。相对路径是相对于当前目录解析的。谢谢你的回答。不过,根据我的说法,这确实有效。我也应该能够使用
$(
echo "$TEXT"