什么是'#';在shell脚本中的变量之前?

什么是'#';在shell脚本中的变量之前?,shell,Shell,有人能解释一下下面的shell脚本将要做什么吗 END_POS=$((${#column}-$COLON_INDEX)) 在此上下文中,它表示该变量值的长度: $ v="hello" $ echo ${#v} 5 $ v="bye" $ echo ${#v} 3 那么这个命令是什么呢 END_POS=$((${#column}-$COLON_INDEX)) 它获取$column中的值的长度,并使用$(())语法执行算术运算,减去$COLON\u INDEX中的值: $ column="h

有人能解释一下下面的shell脚本将要做什么吗

END_POS=$((${#column}-$COLON_INDEX))

在此上下文中,它表示该变量值的长度:

$ v="hello"
$ echo ${#v}
5

$ v="bye"
$ echo ${#v}
3
那么这个命令是什么呢

END_POS=$((${#column}-$COLON_INDEX))
它获取
$column
中的值的长度,并使用
$(())
语法执行算术运算,减去
$COLON\u INDEX
中的值:

$ column="hello"
$ colon_index=2
$ r=$((${#column}-$colon_index))   # len("hello") - 2 = 5 - 2
$ echo $r
3
发件人:

(())没有前导$不是标准的sh特性。它来了 来自ksh,仅在ksh、Bash和zsh中可用$(( )) POSIX shell中允许替换。正如人们所预料的那样 将替换$(())中算术表达式的结果 转换为原始命令。比如参数替换,算术 替换可能会分词,因此应引用 在列表上下文中阻止它


在此上下文中,它表示该变量值的长度:

$ v="hello"
$ echo ${#v}
5

$ v="bye"
$ echo ${#v}
3
那么这个命令是什么呢

END_POS=$((${#column}-$COLON_INDEX))
它获取
$column
中的值的长度,并使用
$(())
语法执行算术运算,减去
$COLON\u INDEX
中的值:

$ column="hello"
$ colon_index=2
$ r=$((${#column}-$colon_index))   # len("hello") - 2 = 5 - 2
$ echo $r
3
发件人:

(())没有前导$不是标准的sh特性。它来了 来自ksh,仅在ksh、Bash和zsh中可用$(( )) POSIX shell中允许替换。正如人们所预料的那样 将替换$(())中算术表达式的结果 转换为原始命令。比如参数替换,算术 替换可能会分词,因此应引用 在列表上下文中阻止它


我能想到的
#
的所有可能用法:

对于数组,它代表变量值或元素的长度:

我回显了变量的值长度、数组长度和数组的第一个索引元素的长度:

$ var="abcd"
$ echo "${#var}"
4
$ arr=('abcd' 'efg')
$ echo "${#arr[@]}"
2
$ echo "${#arr[1]}"
3
$

另外,
$#
提供了传递给脚本/函数的参数数量。

我能想到的
的所有可能用法:

对于数组,它代表变量值或元素的长度:

我回显了变量的值长度、数组长度和数组的第一个索引元素的长度:

$ var="abcd"
$ echo "${#var}"
4
$ arr=('abcd' 'efg')
$ echo "${#arr[@]}"
2
$ echo "${#arr[1]}"
3
$

另外,
$#
提供传递给脚本/函数的参数数量。

当然是variable@EdHealerrr true:)确实更新了variable@EdHealerrr true:)已更新