首页 > 解决方案 > 这个符号是什么意思“#?” 在 ksh

问题描述

“#”是什么意思?在 ksh 脚本中是什么意思?例如:

tt=03
while [ "$tt" !=' ' ];
do
 tt=${tt#"?}
done
echo $tt

我在这里什么也得不到。所以呢 ”#?” 在这个scipt中是什么意思?谢谢你。

标签: ksh

解决方案


假设按照目前的建议在 while 正确的语法(在 [ 和之前 ] 之后需要空白)并且还省略了 " in tt=${tt#"?}(省略的版本是你引用的)。

此外,while 条件中的测试需要针对空字符串'',否则循环不会终止。

  tt=${tt#?}

砍掉字符串中的第一个字符

请参阅此测试程序(我添加了 2 个回声和括号,以便能够在斩波前后看到循环中 tt 的确切内容:

tt=03
while [ "$tt" != '' ] 
do
 echo "A: (tt=$tt)"
 tt=${tt#?}
 echo "B: (tt=$tt)"
done
echo $tt

给出这个结果(注意最后一个回声的最后一行是空的):

A: (tt=03)
B: (tt=3)
A: (tt=3)
B: (tt=)


推荐阅读