我有以下脚本名为test.sh:
echo "file path is : $1"
path=$1
while read -r line
do
num=$($line | tr -cd [:digit:])
echo num
done < $path
exit 0
我试图抓住存储为$ path的文件每行开头的数字。最终结果将是遍历每一行,抓取数字并将其从文件中删除(如果它小于2)。
每次运行此循环时,我都会收到错误“./test.sh:line 5 :: command not found。在while循环的哪一部分我做错了?或者它与tr命令有什么关系?
答案 0 :(得分:1)
我发现你的剧本有些问题:
#!/bin/bash
echo "file path is : $1"
path=$1
while read -r line
do
num=$(tr -cd '[:digit:]' <<<"$line") # use here string to "echo" variable to tr
echo "$num" # added quotes and $
done < "$path" # added quotes, changed $dest to $path
总结:
cmd <<<"$var"
(此处为字符串)是一个内置的bash,旨在替代echo "$var" | cmd
。我在脚本的顶部添加了#!/bin/bash
,因为我使用的是仅限bash的功能。$path
(虽然我可能错了)。exit 0
。