为什么我的bash脚本无法比较这些字符串?

时间:2017-10-11 21:24:44

标签: linux bash ubuntu

您好我已经在这段代码中遇到了大约一天的麻烦,我仍然会遇到同样的错误:

enter image description here

这里有它背后的代码: https://pastebin.com/GpAwrcbj

for f in $(ls $repo); do for f_ghost in $(ls $repo".repo_files/ghost_repo/"); do
    echo $f" "$f_ghost
    if ("$($f)" == "$($f_ghost)")
    then

我一直在试图弄清楚它是否与我比较这两个文件名的方式有关,但即使在尝试将bash指南用于运营商时也是如此。'我无处可去。如果任何人有任何可能导致此问题的建议。 (我已经尝试过chmod以确保所有用户都拥有rw访问权限,所以我真的不知道为什么这会给出一个perms错误)

1 个答案:

答案 0 :(得分:0)

我不认为你在if做你认为你在做的事情。 bash 中的括号只是在子shell中运行命令。所以你试图将两个参数作为命令运行。 ($($f)位将展开$f,尝试运行它,然后替换结果,期望它是一个命令。)

要比较字符串,您可能想要执行类似

的操作
if [ "$f" = "$f_ghost" ]

其余的代码看起来也有点奇怪,但我建议你从那里开始。