我想获得"$*"
在我的函数中使用时得到的字符串的长度。
我试过了:
echo ${#"$*"}
和
echo ${#"*"}
两者都给了我一个糟糕的替换错误。
我想获得"$*"
在我的函数中使用时得到的字符串的长度。
我试过了:
echo ${#"$*"}
和
echo ${#"*"}
两者都给了我一个糟糕的替换错误。
我不认为你可以在一个命令中做到这一点。但是,这似乎有效:
#!/bin/bash
a="$@"
echo "${#a}"
使用临时变量是唯一一种基本方法,您需要取消设置 IFS 或将其设置为空字符串以防止中间出现空格。并使用 $* 而不是 $@ 因为它会给你之间的空格:
IFS= eval "__=\"\$*\""
echo "${#__}"
另一种方法是遍历所有字符串:
L=0; for __; do (( L += ${#__} )); done
echo "$L"
$# 保存传递给函数的位置参数的数量。
试试看:
#!/bin/bash
t() {
echo "num args=$#"
echo "all $*"
}
t "$@"
您可以使用以下方法之一。
expr length "$*"
echo "$*" | awk '{print length}'