我正在嘗試僅修剪以ltrim()
作爲參數給出的字符串的左半部分。這是我現在的代碼。在bash中,如何修剪字符串的某個部分?
ltrim()
{
string=${1}
divider=$((${#string}/2))
trimrule=${2}
string_left=${string:0:$divider}
string_right=${string:$divider}
echo ${string:$divider} ## My own quick debug lines
echo ${string:0:$divider} ## My own quick debug lines
if [ $# -ne 2 ]
then
printf "%d argument(s) entered. 2 required.\n" "$#"
else
while :
do
case $string_left in
${2}*) string_left=${string_left#?} ;;
*${2}) string_left=${string_left%?} ;;
*) break ;;
esac
done
printf "Left side string is %s\n" "${string_left}"
fi
}
然而,當我進入ltrim abcdefghijklmnopq abc
外殼返回如下:
ijklmnopq
abcdefgh
Left side string is bcdefgh
所以我只丟了「一」這個字,而我希望得到「defgh」結果。我究竟做錯了什麼?
你的邏輯。您需要刪除每次迭代中規則的字符數量。 – Mat