Обмен двух файлов в каталоге на скрипте bash - PullRequest
0 голосов
/ 02 октября 2019

Я пишу сценарий, который считывает два файла в каталоге, отображает содержимое, меняет местами файлы и снова отображает содержимое.

Я исследовал, как поменять два файла, и получил метод обмена. Однако этот метод выдает мне ошибку при запуске сценария.

#!/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: not stat '': такого файла или каталога нет: mv: not stat '': неттакой файл или каталог mv: not stat '/tmp/tmp.jduY2Yk6xi/tempfile': нет такого файла или каталога "Как мне выполнить обмен? Также будет приветствоваться любое улучшение кода.

1 Ответ

1 голос
/ 02 октября 2019

Исходя из вашего вопроса, я не уверен, что это соответствует всем вашим критериям. Но если вам просто нужен обмен содержимого из 2 файлов, используйте этот очень простой сценарий.

Он примет 2 файла, которые вы хотите обменять. Прочитайте содержание каждого. Сохраните первый файл как tmp. Затем перезаписать файл1 содержимым файла2. Затем перезаписать файл2 содержимым файла tmp (файл1). Наконец, он снова будет читать содержимое

#!/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
...