什么是'#';在shell脚本中的变量之前?
有人能解释一下下面的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
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:)已更新