在bash脚本的目录中交换两个文件

问题描述 投票:0回答:1

我正在编写一个脚本,该脚本读取目录中的两个文件,显示内容,交换文件,然后再次显示内容。

我研究了如何交换两个文件并获得了交换方法。但是,当我运行脚本时,该方法给我一个错误。

#!/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':没有此类文件或目录”如何实现交换?另外,对代码的任何改进将不胜感激。

bash shell
1个回答
1
投票

根据您的问题,我不确定这是否符合您的所有条件。但是,如果只需要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
© www.soinside.com 2019 - 2024. All rights reserved.