Как скопировать выполняющийся сценарий от текущей папки до другого двойным щелчком

Как мы должны скопировать выполняющийся сценарий от одной папки до другого?

Содержание сценария:

#!/bin/sh

zenity --forms --title="Add Friend" \
    --text="Enter information about your friend." \
    --separator="," \
    --add-entry="First Name" \
    --add-entry="Family Name" \
    --add-entry="Email" \
    --add-calendar="Birthday" >> addr.csv

case $? in
    0)
        echo "Friend added.";;
    1)
        echo "No friend added."
    ;;
    -1)
        echo "An unexpected error has occurred."
    ;;
esac

Позволяет говорят, что я сохранил вышеупомянутый сценарий как test.sh в home/user/Documents/sh/ и когда я выполняю test.sh двойным щелчком, он должен скопировать себя в meow папка home/user/wow/meow/.

0
задан 15 June 2015 в 13:30

2 ответа

Я не уверен, почему Вы хотели бы сделать это, но можно обработать это немного более изящно, чем необработанная копия.

mkdir -p $HOME/wow/meow
cp "$(readlink -f $0)" "$HOME/wow/meow"
  • Это использует $HOME таким образом, мы не уверены в трудно кодированном пути (умеренно более надежный, чем ~ замена на сценарии).
  • Мы проверяем, что целевой каталог существует (и создайте его если не).
  • Мы получаем фактическое местоположение сценария вместо того, чтобы полагаться на трудно кодированный путь.
5
ответ дан 4 October 2019 в 03:21

Добавьте строку в сценарии для копирования себя:

cp /home/user/Documents/sh/test.sh home/user/wow/meow/
2
ответ дан 4 October 2019 в 03:21

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

Похожие вопросы: