ubuntu 14.04 bash脚本权限错误使用$()将文件读入变量

时间:2015-11-16 07:52:11

标签: bash shell ubuntu-14.04

我有一个bash脚本放在我登录的用户主目录下的目录中,该目录读取一个文件(也放在相同的用户主目录中,相对于bash脚本的路径更深)来保存一些变量以便进一步处理在脚本中(这里简化为通用性):

#!/bin/bash
sEnv=$(./config/myfile.conf)
echo $sEnv

使用

从bash运行此文件时
. run-me.sh

脚本因此错误而失败:

-bash: ./config/myfile.conf: Permission denied

文件的权限是:     -rw-RW-R -

我不确定问题是什么(我是一个失败的noob Linux / ubuntu用户)..

希望能得到一些帮助。

此致

的Henrik

4 个答案:

答案 0 :(得分:0)

$(command)执行command,因此command必须是可执行的。尝试

$ chmod 775 config/myfile.conf
$ . run-me.sh

答案 1 :(得分:0)

$(command)实际上试图执行内部的任何内容(即command)。

此处,文件必须本身为:

  • 可执行文件:必须具有x权限(例如chmod 755 filename
  • 程序:内容应该是源代码或对象/二进制形式的代码

答案 2 :(得分:0)

制作./config/myfile.conf可执行文件:

chmod u+x ./config/myfile.conf

首先检查./config/myfile.conf内部的内容是一个好主意,对常规conf文件的读取权限通常就足够了。检查符合您要求的内容并相应地设置权限,不要做任何不必要的事情。

答案 3 :(得分:0)

要将文件读入变量,您需要$(<file)

#!/bin/bash
sEnv=$(<./config/myfile.conf)
echo $sEnv

但是,如果配置文件是以shell样式设置(环境)变量,您可能更愿意获取文件(从而将内容复制到脚本中):

. ./config/myfile.conf
#or alternatively
source ./config/myfile.conf