我正在编写一个脚本,该脚本读取目录中的两个文件,显示内容,交换文件,然后再次显示内容。
我研究了如何交换两个文件并获得了交换方法。但是,当我运行脚本时,该方法给我一个错误。
#!/bin/sh
file1="$1"
file2="$2"
function readFile() {
for file in `ls`
do
cat $file
done
}
function swap()
{
echo "Swapping"
TMP=$(mktemp -d)
mv "$1" $TMP/tempfile
mv "$2" "$file1"
mv $TMP/tempfile "$file2"
[ -e $TMP/tempfile ] && echo "Error!" || rm -r $TMP
}
cd ~
cd test
readFile $file1 $file2
swap $file1 $file2
readFile $file1 $file2
我收到错误“ mv:无法统计”:没有这样的文件或目录mv:无法统计'':没有这样的文件或目录mv:无法统计'/tmp/tmp.jduY2Yk6xi/tempfile':没有此类文件或目录”如何实现交换?另外,对代码的任何改进将不胜感激。
根据您的问题,我不确定这是否符合您的所有条件。但是,如果只需要2个文件的内容交换,则可以使用此非常简单的脚本。
它将接受您要交换的2个文件。阅读每个的内容。将第一个文件另存为tmp。然后用file2的内容覆盖file1。然后,用tmp文件(文件1)的内容覆盖文件2。最后,它将再次读取内容
#!/bin/sh
file1="$1"
file2="$2"
cat $file1 $file2
mv $file1 tmp
mv $file2 $file1
mv tmp $file2
cat $file1 $file2
要运行此
script.sh file1.txt file2.txt
结果
World
hello
hello
World