${dirname#?}
在Shell脚本中,${dirname#?}
是一种参数扩展的形式,用于修改变量dirname
的值。
#
是一个操作符,它的作用是从变量的开头删除最短的匹配模式。?
是一个通配符,它可以匹配任何单个字符。
所以,${dirname#?}
的含义是删除变量dirname
的值的第一个字符。
例如,如果 dirname
的值是 /home/user
,那么 ${dirname#?}
的结果就是 home/user
。
$dirname/$appname "$@"
这行代码 $dirname/$appname "$@"
是在运行一个程序,并将所有的脚本参数传递给这个程序。
$dirname/$appname
是指定的程序的路径$dirname
是脚本所在的目录$appname
是脚本的名称(不包括.sh扩展名)。$dirname/$appname
就是这个脚本的完整路径。"$@"
是一个特殊的变量,它代表了所有的脚本参数。这些参数是以空格
分隔的,每个参数都被视为一个独立的单词。当"$@"
被引用时,它会保留原始的参数值,即使参数中包含了空格
或特殊字符
。
所以,这行代码的作用就是运行指定的程序,并将脚本的所有参数原封不动地传递给这个程序。