我正在编写一个小的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
答案 0 :(得分:5)
你在这里错过了回音。这条线
i=`$f | tr -dc '[0-9]'`
应该是
i=`echo $f | tr -dc '[0-9]'`
答案 1 :(得分:0)
循环中没有子shell,管道和每个文件的附加进程的行:
i=${f//[^0-9]/}
参数替换将删除所有非数字。