Вот некоторые распространенные способы сделать это:
$ str=/home/bamboo/bamboo-agent-home/xml-data/build-dir/NG-VOSGQL239-JOB1
$ echo "${str%/*}" # fast, but wrong if str has no "/"s in it
/home/bamboo/bamboo-agent-home/xml-data/build-dir
$ dirname "$str" # slow, but returns "." for bare names
/home/bamboo/bamboo-agent-home/xml-data/build-dir
$ echo "$str" | sed 's@/[^/]*$@@' # more general, but slow *and* wrong with no "/"s
/home/bamboo/bamboo-agent-home/xml-data/build-dir
Обратите внимание, что в приведенном выше слове мы используем «неправильно», чтобы указать на неожиданное поведение в случае манипулирования путем.(Например, мы определяем вывод dirname
как правильное поведение.)