bash:cut命令不产生任何结果(只是一个空行)

bash:cut命令不产生任何结果(只是一个空行)

我无法回显字符串的一部分。

这是一个简化版本:

t=no_1187985:/home/my.name/testing/no

我只想回显 no_1187985 :

tt=$(echo $t | cut -d":" -f 1)
echo $tt

但这只会产生一个空格(并且在我的实际脚本中没有发现命令错误)

如果我将 -f 1 更改为 - f 2,它适用于第二个字段,我不明白为什么不适用于第一个字段。

这是我的上下文实际代码的一部分:

while read line;
    do
        #echo $line
        #sleep 1
        path=$(dirname "$line")
        #echo $path
        #mkdir -p $(echo $path | cut -d":" -f 2)
        inode= $(echo $path | cut -d":" -f 1)
        echo $inode
        #mv ~/deleted/$inode $(echo $line | cut -d":" -f 2);
    done < .temp

这是创建回收站的尝试。temp 是一个包含要“恢复”的不同文件的路径名的文件。循环遍历每一行。它会在将文件移回目录树之前重新创建目录树。文件当前存储在已删除的文件夹中,并且其索引节点号附加在末尾。当文件被“恢复”(即移回)时,inode 将从 filename 中删除。

.temp 文件包含文件名(原始文件名和 inode 组合)和原始路径名,两者均由“:”分隔符分隔。

答案1

=变量赋值的符号周围不应该有空格。

场景一:

  • inode = something- bash 尝试运行一个带有inode2 个参数的命令。
  • 这相当于说:inode "=" "something"

场景2:

  • inode =something- bash 尝试运行一个inode以 1 个参数(字符串'=something')命名的命令
  • 这相当于说:inode "=something"

场景3:

  • inode= somethingsomething- bash 尝试在其环境中设置为inode空字符串来运行命令。
  • 这相当于说:inode="" something

笔记:检查部分2.9.1 简单命令来自下面提供的参考。

参考:外壳命令语言

相关内容