Создание пути для работы перед копированием -вставка и выполнение команд из файла по одной в командной строке

Другое решение:

$ cat cis132Students
peter
paul
mary
$ cat file
peter
mary
lucy
$ echo "There are $(grep -cf file cis132Students) classmates in this list, where $(wc -l <cis132Students) is the actual number of classmates."
There are 2 classmates in this list, where 3 is the actual number of classmates.
  • grep -cf file cis132Students:параметр -f fileпринимает fileв качестве входного файла шаблона для grep, а -cподсчитывает совпадающие строки
  • wc -l <cis132Studentsвыводит количество строк без имени файла
0
19.03.2021, 14:59
1 ответ

$HOME— переменная. Вам не нужен новый. Итак, если вы знаете, что целевой каталог — $HOME/MEDIUM_DIRECTORY_1/DOMAIN_DIRECTORY/MEDIUM_DIRECTORY_2, то это все, что вам нужно в вашем скрипте :

.
full_path="$HOME/MEDIUM_DIRECTORY_1/DOMAIN_DIRECTORY/MEDIUM_DIRECTORY_2"

Например, рассмотрим этот скрипт:

#!/bin/bash
full_path="$HOME/MEDIUM_DIRECTORY_1/DOMAIN_DIRECTORY/MEDIUM_DIRECTORY_2"
echo "Path is: $full_path"

Бег, который дает:

$ foo.sh
Path is: /home/terdon/MEDIUM_DIRECTORY_1/DOMAIN_DIRECTORY/MEDIUM_DIRECTORY_2

Как видите, $HOMEспрашивать не нужно, он уже доступен внутри вашего скрипта по умолчанию.

Если вам нужны данные от пользователя, не запрашивайте их! Это подвержено ошибкам и раздражает пользователя. Просто возьмите его из командной строки:


full_path="$1"
## rest of the script

Затем вы должны вызвать сценарий с scriptName.sh $HOME/MEDIUM_DIRECTORY_1/DOMAIN_DIRECTORY/MEDIUM_DIRECTORY_2, а затем переменная $full_pathв сценарии будет установлена ​​на $HOME/MEDIUM_DIRECTORY_1/DOMAIN_DIRECTORY/MEDIUM_DIRECTORY_2.

Наконец, если вы должны запросить пользователя по какой-то неясной причине, которую я не могу себе представить, вы можете запросить относительный путь. Например:

echo 'Please enter the relative path to the target directory.'
read -p "the path you enter will be assumed to be relative to $HOME: " full_path
echo "You entered: $full_path, moving there now"
cd "$full_path"
echo "We are currently in $PWD"

Бег, который даст:

$ foo.sh
Please enter the relative path to the target directory.
the path you enter will be assumed to be relative to /home/terdon: foo
You entered: foo, moving there now
We are currently in /home/terdon/foo
0
28.04.2021, 22:59

Теги

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