我有一个变量var=/usr/local/bin/test/exec
现在我必须删除上面变量中的最后2个字符串:
var=/usr/local/bin/
并且在删除最后2个字符串后,我必须在shell循环中使用此变量'var'。
试过:
var='/usr/local/bin/test/exec'
echo ${var#$(dirname "$(dirname "$s")")/}
输出:
test/exec
我将截断的部分作为输出,但我期待部分的其余部分不是截断的部分
任何建议
答案 0 :(得分:1)
您可能对shell的内部子字符串处理运算符感兴趣:%
,%%
,#
和##
。观察:
#!/bin/sh
var=/usr/local/bin/test/exec
# use shell substring processing to cut the variable down to size:
var="${var%/*}"
var="${var%/*}"
echo "$var"
# Manipulate the resulting string in a loop
for i in 1 2 3
do echo "${var}${i}"
done
答案 1 :(得分:0)
一些谷歌搜索后确定我找到了解决方案:
var1="$(echo $var | cut -d '/' -f-4)"
答案 2 :(得分:0)
如果您不知道字段数,则有一个标准的awk
解决方案。但是,我将使用rev
var='/usr/local/bin/test/exec'; echo $var | rev | cut -d/ -f3- | rev
将给出
/usr/local/bin
答案 3 :(得分:0)
你也可以尝试这种方法
var=/usr/local/bin/test/exec
sed 's_\(.*\)/.*/.*$_\1_' <<< $var
另一种方法
sed 's_\(.*\)\(/.*\)\{2\}$_\1_' <<< $var
<强>输出:强>
/usr/local/bin