Печать аргумента командной строки в новый текстовый файл Linux - PullRequest
0 голосов
/ 08 ноября 2019

впервые задает вопрос о переполнении стека. Я студент, работающий над небольшим приложением Linux todo list, где пользователь может создавать новые файлы с помощью команды, подобной этой:

./todo add "hello world"

... и результатом должен быть новый текстовый файл в todoсписок с текстом «hello world» (или что-то в пределах «»).

Что у меня есть до сих пор: мой bash-скрипт add.sh создает новый файл, добавляет его в список задач и переименовывает всеэлементы в этом списке для создания нумерованного списка, например:

1.txt 2.txt 3.txt

Вот мой код для add.sh:

echo $2 >> newFile.txt. #creates a new file
mv newFile.txt ~/todoApp/usrMenu/todo #moves file to todo list
cd ~/todoApp/usrMenu/add && ./name.sh #renumbers all files in the todo list

Но вот мой вопрос: как мне получить аргумент $ 2 в командной строке («привет мир»), чтобы быть текстом в моем новом файле?

Прямо сейчас, когда я котирую новый файл, он пуст. Я хочу, чтобы новый файл читался как "hello world".

Заранее спасибо!

1 Ответ

0 голосов
/ 08 ноября 2019

Проблема в вашем ./todo скрипте:

if [ $1 == "add" ]
then
  ./usrMenu/add/add.sh #calls add.sh
fi

Вы не передаете параметры от ./todo до add.sh, поэтому $2 в add.sh будет пустым и другимот $2 в todo. Чтобы передать все параметры, вы можете использовать "$@":

if [ "$1" == "add" ]
then
  ./usrMenu/add/add.sh "$@" #calls add.sh and forwards all parameters
fi

Или, в качестве альтернативы, передать только интересующий вас параметр, который в сценарии станет "$1" (НЕ «$ 2»):

./usrMenu/add/add.sh "$2" # Let "$2" in this script become "$1" in add.sh
...