【问题标题】:bash script may need root permissionbash 脚本可能需要 root 权限
【发布时间】:2014-12-24 11:27:46
【问题描述】:

我正在尝试学习 bash 脚本。我编写了一个脚本,将文件名中的空格转换为下划线。它工作正常。到目前为止一切顺利。

我的脚本可能进入了某个目录,其中包含其他用户拥有的文件(例如 root 或 www-data)。

幸运的是,我的脚本无法转换这些文件 :) 但我更喜欢警告消息,例如“您需要 root 权限”左右。

这是转换块:

if  [[ $# -eq 2 ]]; then
    echo "Converting directory $2 .."
    find . -name '* *' | while read file
    do
        target=`echo "$file" | sed 's/ /_/g'`
        mv "$file" "$target" 2> /dev/null
    done
else
    fOptionE (produces usage message)
fi

你能帮我找到一个正确的方法来返回“需要root权限”输出吗?

【问题讨论】:

  • 删除 2> /dev/null 以使 mv 写入有用的规范错误消息。这比声称您需要 root 更好,因为 mv 可能失败的原因还有很多。
  • 如果您想检查“需要root”,您可以尝试手动检查权限,但这不一定是一件简单的事情。

标签: linux bash permissions root


【解决方案1】:

您是否授予了脚本的执行权限

chmod u+x your_script.sh
./your_script.sh

【讨论】:

    【解决方案2】:

    试试看文件是否可写:

    if [ ! -w "$file" ]
    then
      echo "The file is NOT writable"
    else
      echo "The file is writable"
    fi
    

    【讨论】:

      【解决方案3】:

      试试这个:

      if [ x"`whoami`"x != x"root"x ]
      then
          : # do something
      fi
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2023-03-29
        • 2011-05-09
        • 1970-01-01
        • 2016-12-04
        • 1970-01-01
        • 2015-04-08
        • 2012-05-03
        • 1970-01-01
        相关资源
        最近更新 更多