【问题标题】:config file reading using shell script使用 shell 脚本读取配置文件
【发布时间】:2016-06-04 20:20:27
【问题描述】:

我有一个配置文件,其中包含一些文件的路径。

path.conf 文件

path=/home/work_group/Desktop/rt.txt

path=/home/test/

.... ....

path=/home/work_group/Documents/offdoc/

在一个脚本中,我想读取所有这些文件路径并为它们设置权限。 我尝试了以下代码,但它甚至没有打印路径名。

#!/bin/bash 
while IFS= read -r line || [[ -n "$path" ]]; do
if [ -n "$path" ]
then
echo "Text read from file: $path"
chmod 0750 $path

fi
path=
done < admin.cfg

谁能帮我写一个脚本,获取配置文件中提到的所有文件路径并将它们的权限设置为 0750。

【问题讨论】:

  • 请正确缩进问题。另请查看[ mcve ] 的构成要素。
  • 无论您要完成什么,chmod 777 都是错误的,并且存在安全问题。是什么让您想要允许任何有权访问系统的人写入这些文件? privilege escalation?的概念你懂吗
  • 您正在将数据读入line,但随后检查了一个名为path 的不同变量。投票结束是微不足道的错误。
  • 参见stackoverflow.com/questions/10067266/…Stack Overflow bash tag wiki 了解常见的新手陷阱列表。

标签: bash shell


【解决方案1】:

这是一个快速的单线,可以为您完成工作:

for i in $(awk -F'=' '{print $2}' path.conf | xargs); do chmod 0750 $i; done

$() 在子 shell 中运行 awk 并输出文件名。 xargs 将它们收集到一行中,以便 for 循环可以遍历它们。

自己把它变成脚本应该很容易。

更新: Tripleee 指出了您尝试中的错误,您应该听取他的建议。老实说,我只是读了第一行,认为它没有意义,而是写了这个答案。

【讨论】:

    猜你喜欢
    • 2011-08-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-09-01
    • 1970-01-01
    相关资源
    最近更新 更多