在目录名和基本名上获取“权限被拒绝”

use*_*539 1 linux shell dirname

就这样。他们只是不会为我工作。这次我做错了什么?

    # nquo is: /home/bryan/renametest/C D/y z

    # script:
    dirn=dirname "$nquo"
    echo "dirn $dirn"
    bnam=basename "$nquo"
    echo "bnam $bnam"
Run Code Online (Sandbox Code Playgroud)

运行结果:

    ./script3.sh: 208: /home/bryan/renametest/C D/y z: Permission denied
    dirn 
    ./script3.sh: 208: /home/bryan/renametest/C D/y z: Permission denied
    bnam 
Run Code Online (Sandbox Code Playgroud)

Jon*_*ler 5

就目前而言,您的脚本正在尝试$nquo先将环境变量dirn设置为value dirname,然后再将变量bnam设置为value 来运行in命名的文件basename。由于它不是可执行文件,因此您会收到有关无法执行文件的错误消息。

您大概打算在文件名上运行命令,这需要反引号或(最好)$(...)在文件周围:

dnam=$(dirname "$nquo")
bnam=$(basename "$nquo")
Run Code Online (Sandbox Code Playgroud)