在shell中分配带空格的变量

时间:2017-01-10 12:26:36

标签: bash shell

我有一个文件,其中写有以下文字 -

hello h.i. b-y-e

我想将此值读入变量。我已经定义了一个函数 -

function read() { p=`cat $1`; echo "$p"; $2=`echo "$p"`; }

我收到以下错误 -

hello h.i. b-y-e
-bash: v=hello: command not found

然而,当我这样做时 -

p=`cat $filename`

text=`echo "$p"`

我有所需的字符串文字。有人可以解释一下行为上的差异以及实现我想做的事情。

1 个答案:

答案 0 :(得分:1)

  

查看{/ 3}}在shell上下文中的含义

将变量存储在变量中的所有操作都是

fileContent="$(<input-file)"
printf "%s\n" "$fileContent"
hello h.i. b-y-e

(或)如果您认为它不配2行,只需使用单行

printf "%s\n" "$(<input-file)"

(或)使用

功能
function getFileContents() {
   local input=$1
   printf "%s" "$(<input)"  
}

newVariable="$(getFileContents input-file)"
printf "%s\n" "$newVariable"
hello h.i. b-y-e

(和)如果要求足够糟糕,可以将变量传递给函数,例如

unset newVariable

function getFileContents() {
   local input=$1
   declare -n var=$2
   var="$(<$input)"
}

getFileContents file newVariable
printf "%s\n" "$newVariable"
hello h.i. b-y-e