Я не знаком с git
,
поэтому я не очень понимаю, что вы пытаетесь сделать -
в частности, почему в вашей первой команде дважды встречается слово echo
,
но затем вы не поместили его в свои переменные?
Но я предполагаю, что вы хотите сделать что-то вроде этого:
Avineshwar_func() { git --git-dir="$1" echo test-folder/.git/ add Steps-to-follow.txt && git --git-dir="$2" echo test-folder/.git/ commit }
и тогда, если вы скажете
Avineshwar_func foo bar
это будет эквивалентно тому, чтобы сказать
git --git-dir=foo echo test-folder/.git/ add Steps-to-follow.txt && git --git-dir=bar echo test-folder/.git/ commit
Конечно, вы можете изменить имя с Avineshwar_func
на любое другое, например, git1
.
Как только вы добьетесь того, что все это будет работать, вам следует добавить обработку ошибок; например,
git1() { if [ -d "$1" ] && [ -d "$2" ] then git --git-dir="$1" echo test-folder/.git/ add Steps-to-follow.txt && git --git-dir="$2" echo test-folder/.git/ commit else echo "Usage: git1 dir1 dir2" return 1 fi }
Это неправильный синтаксис в bash:
nohup ./NEW_SCRIPT_NAME.sh & && rm NEW_SCRIPT_NAME.sh
From Shellcheck:
Line 1:
nohup ./NEW_SCRIPT_NAME.sh & && rm NEW_SCRIPT_NAME.sh
^-- SC1070: Parsing stopped here. Mismatched keywords or invalid parentheses?
Вы не можете просто запустить something & && something
, потому что помещение первой команды в фон не позволяет ждать кода возврата скрипта.
Вы можете либо запустить весь конвейер под nohup в фоновом режиме (желательно в виде скрипта):
nohup ./run.sh &
, либо, если вы действительно хотите, чтобы все было в одной команде, вам нужно дождаться результата:
nohup ./NEW_SCRIPT_NAME.sh & wait && rm NEW_SCRIPT_NAME.sh
, который будет ждать завершения скрипта, прежде чем он удалит его.