我正在尝试运行这个简单的脚本,我在其中循环浏览目录中的一系列文件,并希望创建一个带有' cut'的变量,以提取部分文件名。 我得到一个权限被拒绝错误,无法弄清楚原因。 以下是我的剧本。
FILES=./data/*
for f in $FILES
do
NEWNAME=$($f|cut -c3-12)
echo $NEWNAME
done
最终目标是使用mkdir /path/to/new/directory/$NEWNAME
为每个文件创建一个目录以进行下游处理。
答案 0 :(得分:3)
$(stuff)
执行stuff
作为命令,并将其输出替换回命令行。所以当你这样做时:
$($f|cut -c3-12)
它尝试将$f
作为命令执行,并将其输出传递给cut
。您收到错误,因为$f
中的文件没有执行权限。
如果你试图削减变量$f
的内容,你需要回应它:
NEWNAME=$(echo "$f" | cut -c3-12)
但是没有必要使用cut
,bash
有一个内置的参数扩展运算符来选择子字符串:
NEWNAME=${f:2:10}