csh 脚本 - 获取子字符串或从字符串中删除最后一个字符

问题描述 投票:0回答:2

我正在尝试编写一个shell脚本。我从用户那里获取路径作为位置。我想知道它是否以“/”结尾。如果是这样,我必须删除它并将其分配给另一个变量。

我尝试过的脚本

#!/bin/csh

set loc="/home/user/"
if (("$loc" == */ ))
then
    echo true
    set b=${loc::-1}
    echo $b
else
    echo false
endif

但是我没有得到任何输出。

shell csh
2个回答
0
投票

试试这个;

#!/bin/csh
set loc="/home/user/"
set lastChar=`echo $loc | rev | cut -c -1`
if ( "$lastChar" == "/" ) then
    echo true
set b=`echo $loc | rev | cut -c 2- | rev`
#set b=`echo $loc | sed s'/.$//'`
#set b=`echo $loc | awk '{print substr($0, 1, length($0)-1)}'`
echo $b
else
    echo false
endif

0
投票

您可以使用

:h
修饰符;它会剥离路径的最后一个
/*

set loc = '/home/user/'
if (($loc:q == */))
then
    echo true
    set b = $loc:h:q
    echo $b:q
else
    echo false
endif
/home/user
© www.soinside.com 2019 - 2024. All rights reserved.