尝试剪切变量的一部分时出现语法错误

尝试剪切变量的一部分时出现语法错误

如果我写一个简单的echo $i,我没有问题:它显示了变量。但如果我尝试用它做点什么

$($i|cut -d"." -f1-3)

然后我收到错误消息

: -bash: /...file.backup: Permission denied (in root env)

有人可以告诉我解决问题的方法吗?

for i in $(find  /directory -type f -name '*.backup')
do 
  echo $i $($i|cut -d"." -f1-3)
done

答案1

我想你错过了 $i 之前的回声

for i in $(find /directory -type f -name '*.backup')
do 
echo $i $(echo "$i"|cut -d"." -f1-3)
done`

答案2

也许你可以使用basenameand or 子字符串?

参见man basenamehttp://tldp.org/LDP/abs/html/string-manipulation.html有关子字符串的详细信息。

使用基本名称,您可以获得文件名的第一部分,即。basename $i ".backup"将从文件名中删除 .backup。

${i::-7} 将从变量中删除最后 7 个字符。

答案3

分两圈解决了。也许它不是最佳的,但有效。如果有人知道其他解决方案 - 请告诉我们。

for i in $(find  /directory -type f -name '*.backup')
do 
    for j in $(find  /directory -type f -name '*.backup'|cut -d"." -f1-3)
    do 
        echo $i $j 
    done 
done

相关内容