bash子串操作上的错误替换

时间:2017-08-03 14:46:04

标签: bash

我试图让这个简单的功能起作用:

p4edit(){
    p4 edit ${$1:25}
}

我在SO上阅读了other popular bad substitution question,它似乎没有帮助我或与我的问题有关。我在这做错了什么?我想切断提供给我的函数的前25个字符。

我注意到一个简单的echo ${"test":3}以同样的方式失败,但这成功了:

test="test"
echo ${test:3}

我只是在一个bash实例中运行它。

2 个答案:

答案 0 :(得分:2)

为什么两次$

p4edit(){
  echo ${1:25}
}

对我来说很好。 bash中的字符串函数有点棘手,因为它们并不真正一致。但${}已定义,您正在寻找变量。所以只提交名称。 ${#var}有一些字符串函数,但据我所知,$

内部永远不会有${}

答案 1 :(得分:2)

你有太多的钱! (太多美元符号)。使用:

p4edit(){
    p4 edit ${1:25}
}

$1中提取第25个及以后的字符。