Bash Script - в ~/.ssh/ нет файлов

Я пытаюсь скопировать файл из: ~/.ssh/, но каждый раз, когда я запускаю скрипт, он постоянно говорит

pi@raspberrypi:/etc/greenwich $ ./copybash.sh
cat: ~/.ssh/testfilegen2.log: No such file or directory

copybash.sh

!/bin/bash
sourceFile="~/.ssh/testfilegen2.log"
targetFile="/etc/network/interfaces2"
sudo cat "$sourceFile" > "$targetFile"
sudo service networking restart

Какие-либо предложения?

Спасибо

2 ответа

Решение

Отмените цитату из тильды в задании sourceFile так что он расширяется правильно. Расширение тильды не происходит при расширении параметра.

sourceFile=~/".ssh/testfilegen2.log"

(В этом случае кавычки не понадобятся вообще, но только для демонстрации того, что ~ и следующее / единственные вещи, которые должны остаться без кавычек для расширения тильды.)

Взгляните на этот фрагмент кода:

#!/bin/bash
v1=~/'file1.txt'
v2=~/'file2.txt'
echo 'Hi!' > $v1 
cat $v1 > $v2
cat $v2

$ script.sh
Hi!

Документация находится в разделе "Расширение тильды" " Руководства по общим командам BASH".

Другие вопросы по тегам