为什么不能将bash的内容分配给变量?

时间:2016-03-24 08:06:12

标签: bash ubuntu sed

文件:test.txt(是的,只有4个字符)

@(:/

Bash脚本文件:test.sh

#!/bin/bash
# Get the entire content
content=`cat ./test.txt`
echo $content

我在Ubuntu上运行这个版本的bash(这在OS X上运行正常,但我需要它在Ubuntu上运行)

Bash版本:

vagrant@vagrant-ubuntu-trusty-64:/vagrant$ bash --version
GNU bash, version 4.3.11(1)-release (x86_64-pc-linux-gnu)
Copyright (C) 2013 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>

Ubuntu版本:

Linux vagrant-ubuntu-trusty-64 3.13.0-66-generic #108-Ubuntu SMP Wed Oct 7 15:20:27 UTC 2015 x86_64 x86_64 x86_64 GNU/Linux

这很烦人,因为bash只是挂起而永远不会完成。真的很好奇,知道是否有某些规则,我只是不熟悉某些版本的Bash。

此外,如果您没有完全相同的版本并且它适用于您,请不要发布并说“它对我来说很好”。这篇文章的重点是不要听到它在完全不同的情况下对你有多大的作用。关键是要理解为什么它在这些非常具体的情况下不起作用。

1 个答案:

答案 0 :(得分:1)

感谢所有好评。虽然我仍然不知道问题的原因,但很明显,当bash变量可能包含意外的文本组合时,引用bash变量很重要。在这种情况下,@ tripleee的解决方案正常工作。

正常工作的脚本:

#!/bin/bash
# Get the entire content
content=$(cat ./test.txt)
echo "$content"