Linux Bash未将文件读取到变量
我有一个简单的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 "
#!/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"