Bash - 初始化变量以输出命令"权限被拒绝"

时间:2014-04-16 11:58:55

标签: bash variables pipe

我正在编写一个小的bash脚本来获取每个文件名中的数字。例如,文件名helloworld1.txt将生成1

尝试将输出设置为变量i时,我会收到每个文件的错误。

line 5: 985.txt: Permission denied

如果我只是回显命令echo $f | tr -dc '[0-9]'而不是将其分配给变量,那么一切都很好。

#!/bin/bash

for f in *
do
        i=`$f | tr -dc '[0-9]'` // Permission denied.
        echo $i
done

2 个答案:

答案 0 :(得分:5)

你在这里错过了回音。这条线

i=`$f | tr -dc '[0-9]'`

应该是

i=`echo $f | tr -dc '[0-9]'`

答案 1 :(得分:0)

循环中没有子shell,管道和每个文件的附加进程的行:

i=${f//[^0-9]/}

参数替换将删除所有非数字。