$ {foo#?}在bash脚本中意味着什么?

时间:2015-05-22 15:44:01

标签: bash

有人可以告诉我以下内容

tmp="${dirname#?} 

正在下面的脚本中执行:

#!/bin/sh
appname=`basename $0 | sed s,\.sh$,,`

dirname=`dirname $0`
tmp="${dirname#?}"

if [ "${dirname%$tmp}" != "/" ]; then
dirname=$PWD/$dirname
fi
LD_LIBRARY_PATH=$dirname
export LD_LIBRARY_PATH
$dirname/$appname "$@"

似乎删除了前导'/',但我找不到#的任何文档?操作

1 个答案:

答案 0 :(得分:7)

${var#?}扩展为$var的值,删除第一个字符。

通常,${var#substring}从变量$var的开头删除最短的子字符串。 ?是一个特殊字符,表示任何字符

此功能记录在this page of the bash manual上(查找${parameter#word})。