Como cortar a última parte de “/script.sh” de uma string?

2

Como eu poderia modificar este INPUT:

/home/USER/Desktop/script.sh

para este OUTPUT:

/home/USER/Desktop/

... usando bash ou perl ?

É claro que script.sh poderia ser qualquer coisa: (por exemplo, scrasdfipt.sh , etc) e o caminho antes que pudesse ser qualquer coisa.

    
por LanceBaynes 29.07.2011 / 09:34

4 respostas

9

dirname /home/USER/Desktop/script.sh

    
por 29.07.2011 / 09:40
4

Para a pergunta exata , você pode usar

printf "$(dirname /home/USER/Desktop/script.sh)/"

Eu estou supondo que este é um problema XY , e você quer se referir a um arquivo no mesmo diretório como o script atual . Em caso afirmativo:

current_dir="$(dirname -- "$0")"

Neste ponto, você pode fazer coisas como

source "${current_dir}/foo.sh"
echo foo > "${current_dir}/bar.txt"
    
por 29.07.2011 / 09:49
3

Usando o bash:

$ dirname -- "$string"

Você também pode obter o último bit da mesma maneira:

$ basename -- "$string"
    
por 29.07.2011 / 09:40
1

Além do dirname proposto, você também pode remover um susbstring usando expansão de parâmetro :

dir=/home/USER/Desktop/script.sh
echo ${dir%/*}
/home/USER/Desktop
    
por 29.07.2011 / 11:56

Tags