0

I am using tcsh shell with Jenkins. In short, the matching suffix should be removed from the output.

Achieved in bash with the following.

cd ${WORKSPACE%${JOB_NAME}}

Case:

Given the following variables:

WORKSPACE = "/abc/def/ghi/jkl"
JOB_NAME = "ghi/jkl" 

The excepted output is:

/abc/def

With bash, echo ${WORKSPACE%${JOB_NAME}} would return abc/def for the example above. How can I achieve this with tcsh?

I have tried a few things:

echo "/abc/def/ghi/jkl" | sed "s|'ghi/jkl'|' '|g"

In this case, the output was: /abc/def/ghi/jkl, but I expected /abc/def/.

3
  • @drewk, in csh, assignment is with set var = value, not var=value (nor var = value) Commented Apr 25, 2023 at 15:37
  • 2
    Don't use tcsh, there's no reason to be using tcsh in this century. Doing anything reliably is virtually impossible in that shell. If you're looking for a better shell than bash, look at zsh, rc, yash, fish or es, looking at tcsh would be looking backwards. Commented Apr 25, 2023 at 15:43
  • 1
    In bash or ksh where that syntax comes from or any POSIX shell, that should rather be cd -P -- "${WORKSPACE%"$JOB_NAME"}" (bearing in mind that if the suffix is not found $WORKSPACE is expanded as-is). Commented Apr 25, 2023 at 15:46

0

You must log in to answer this question.

Browse other questions tagged .