在循环linux中创建变量 - 权限被拒绝

时间:2017-10-21 19:26:57

标签: linux permissions cut

我正在尝试运行这个简单的脚本,我在其中循环浏览目录中的一系列文件,并希望创建一个带有' cut'的变量,以提取部分文件名。 我得到一个权限被拒绝错误,无法弄清楚原因。 以下是我的剧本。

FILES=./data/*

for f in $FILES
do
    NEWNAME=$($f|cut -c3-12)
    echo $NEWNAME
done

最终目标是使用mkdir /path/to/new/directory/$NEWNAME为每个文件创建一个目录以进行下游处理。

1 个答案:

答案 0 :(得分:3)

$(stuff)执行stuff作为命令,并将其输出替换回命令行。所以当你这样做时:

$($f|cut -c3-12)

它尝试将$f作为命令执行,并将其输出传递给cut。您收到错误,因为$f中的文件没有执行权限。

如果你试图削减变量$f的内容,你需要回应它:

NEWNAME=$(echo "$f" | cut -c3-12)

但是没有必要使用cutbash有一个内置的参数扩展运算符来选择子字符串:

NEWNAME=${f:2:10}