在循环linux中创建变量 - 权限被拒绝
问题描述:
我想运行这个简单的脚本,在这个脚本中我通过一系列目录中的文件循环,并且想要创建一个带有'cut'的变量,以提取部分名称的文件。 我得到一个权限被拒绝的错误,不知道为什么。 下面是我的脚本。在循环linux中创建变量 - 权限被拒绝
FILES=./data/*
for f in $FILES
do
NEWNAME=$($f|cut -c3-12)
echo $NEWNAME
done
的最终目标是创建每个文件一个目录,下游加工,具有mkdir /path/to/new/directory/$NEWNAME
。
答
$(stuff)
执行stuff
作为命令并将其输出替换回命令行。所以,当你这样做:
$($f|cut -c3-12)
它试图执行$f
为命令,和管道输出到cut
。您收到错误,因为$f
中的文件没有执行权限。
如果你想切变$f
的内容,你需要呼应它:
NEWNAME=$(echo "$f" | cut -c3-12)
但有没有必要使用cut
为此,bash
有一个内置的参数扩展操作选择一个子字符串:
NEWNAME=${f:2:10}
+0
谢谢!它的工作,并使语法的使用更清晰。 – CAsimonet
谁是所有者,以及'。/ data/*'中文件的权限是什么? – alfasin