在循环linux中创建变量-权限被拒绝
我试图运行这个简单的脚本,在这个脚本中,我循环遍历目录中的一系列文件,并希望创建一个带有“cut”的变量,以提取文件名的一部分。 我收到一个权限被拒绝的错误,无法找出原因。 下面是我的脚本在循环linux中创建变量-权限被拒绝,linux,permissions,cut,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$(stuff)将stuff作为命令执行,并将其
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}
谁是所有者,对
/data/*
中的文件有什么权限?谢谢!它起作用了,并且使语法的使用更加清晰。