Untuk menghapus trailing slash jika ada, Anda dapat menggunakan konstruksi ekspansi parameter suffix yang ada di semua shell gaya POSIX:
x=${x%/}
Ada beberapa komplikasi. Ini hanya menghapus satu tebasan, jadi jika Anda memulai dengan a/b/c//
maka Anda masih akan berakhir dengan tebasan. Selanjutnya, jika jalur aslinya adalah /
, Anda harus menjaga garis miring. Berikut ini solusi yang lebih kompleks yang menangani kasus-kasus ini:
case $x in
*[!/]*/) x=${x%"${x##*[!/]}"};;
*[/]) x="/";;
esac
Atau, dalam ksh, atau dalam bash setelah shopt -s extglob
:
[[ x = *[!/] ]] || x=${x%%*(/)}
Perhatikan bahwa dalam banyak kasus, tidak masalah ada garis miring. Tidak masalah jika argumennya adalah tautan simbolik ke direktori: dengan garis miring, argumen menunjuk direktori, sedangkan tanpa garis miring, argumen menunjuk tautan simbolik itu sendiri. Ini juga penting dengan beberapa program lain, misalnya argumen sumber rsync
diperlakukan berbeda tergantung pada adanya garis miring.
/
.