我无法回显字符串的一部分。
这是一个简化版本:
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 尝试运行一个带有inode
2 个参数的命令。- 这相当于说:
inode "=" "something"
场景2:
inode =something
- bash 尝试运行一个inode
以 1 个参数(字符串'=something'
)命名的命令- 这相当于说:
inode "=something"
场景3:
inode= something
something
- bash 尝试在其环境中设置为inode
空字符串来运行命令。- 这相当于说:
inode="" something
笔记:检查部分2.9.1 简单命令来自下面提供的参考。
参考:外壳命令语言