fish - Syntax error in script -
my script try execute mvn clean install in projects before tried switch dev branch , pull it.
successstring="[info] build success"; file="mvnoutput"; red=$'\e[1;31m'; grn=$'\e[1;32m'; end=$'\e[0m'; function checkresult if grep -fxq "$successstring" $file echo -en "${grn}[${1}]build ok${end}"; else echo "${red}[${1}]error in mvn clean install${end}"; exit 1; fi; end function pullandswitchdevbranch git checkout dev; git pull origin dev; end cd api-pay-commons/; pullandswitchdevbranch; touch mvnoutput; mvn clean install -u > mvnoutput; checkresult pay;
why received error?
line 17: end: command not found ./script.sh: line 20: syntax
error near unexpected token
git' ./script.sh: line 20:
git checkout dev;'
you have used "fish" tag, i'm assuming running fish shell.
if so: not valid fish script. fish explicitly not posix-compatible, might want read on syntax. (if not, please correct tag)
red=$'\e[1;31m';
fish not use var=value
set variable. uses set var value
.
fish not have $''
style of quoting. instead, backslash-escapes interpreted outside of quotes.
so set red \e"[1;31m"
. alternatively, fish offers set_color
builtin, prints escape sequence given color. set red (set_color red)
(or call set_color
later).
then
fish not use if condition; dosomething; fi
. it's if condition; dosomething; end
.
echo -en "${grn}[${1}]build ok${end}";
fish not use "${var}"
. not call function arguments $1
et al.
this echo -ens "$grn" "[$argv[1]]" "build ok" "$end"
.
exit 1
fish not allow exit
ing functions. you'll have return 1
, check result outside.
additionally, you're using semicolons on place, not typical style in shell i'm aware of.
in case not using fish, posix-compatible shell (like bash), not valid. main (and possibly only) issue using function something; dosomething; end
. in bash, be
function () { #dostuff }
and in pure posix,
() { #dostuff }
Comments
Post a Comment