我正在尝试编写一个非常简单的 bash 脚本来修改许多文件,并将每个命令的结果输出到日志中,以检查命令是否成功完成。一切似乎都在工作,除了我无法将带有变量的 CAT 传递给我的脚本——我不断收到cat: >>: No such file or directory
错误消息。
#! /bin/bash
file1="./file1"
file2="./file2"
check () {
if ( $1 > /dev/null ) then
echo " $1 : completed" | tee -a log
return 0;
else
echo "ERR> $1 : command failed" | tee -a log
return 1;
fi
}
check "cp $file1 $file1.bak" # this works fine
check "sed -i s/text/newtext/g $file1" # this works, too
check "cat $file1 >> $file2" # this does not work
我尝试了任意数量的引用命令的组合。我可以让它工作的唯一方法是使用以下内容:
check $(cat $file1 >> $file2)
但是,这不会将命令本身check
仅传递给返回值,因此$1
在函数中check
进行/dev/null
而不是执行的命令,这不是我想要的特定行为。
为了完整起见,该log
文件如下所示:
cp ./file1 ./file1.bak : completed
sed -i s/text/newtext/g ./file1 : completed
ERR> cat ./file1 >> ./file2 : command failed
我确信解决方案相当简单,但它已经让我躲了几个小时,并且没有多少谷歌搜索产生任何帮助。谢谢你看。