如果我写一个简单的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
也许你可以使用basename
and or 子字符串?
参见man basename
和http://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