如何解决Bash命令在交互式shell中起作用,但在脚本中不起作用
| 哎呀 还有另一个Bash问题。for i in ${#input}; do echo ${input:$i:1}; done
在交互式bash中工作,但在shell脚本中工作。输入是基于参数的变量。设置正确。
有任何想法吗?
解决方法
不知道它如何在交互式shell中为您工作,此表达式:
${#input}
如果input
是数组变量,将返回第一个元素中的字符数
除此以外
将返回input
变量中的字符数
编辑:根据您的评论
我认为您正在尝试执行以下代码:
for ((i=0; i<${#input}; i++))
do
echo ${input:$i:1}
done
此代码将对输入字符串中的每个字符进行迭代,然后回显每个字符。
, 我看不到这段代码的用途-它等效于单个echo
。
说明:
${#input}
是input
变量内容的长度。它始终是一个数字,因此循环将始终执行一次。然后将“ 8”修改为包含该可变长度。
然后${input:$i:1}
表示input
变量中的\“ 1个字符,起始于偏移量$i
,它等于变量的长度,因此超出了变量的结尾。即${input:$i:1}
始终是一个空字符串。因此,您的代码可以简化为:
echo
例如,如果$input
为foobar
,则${#input}
为6
,并且循环将执行以下命令:echo ${input:6:1}
。偏移量是从零开始的,因此therefore17ѭ刚好超过$input
的最后一个字符。如果要获取变量的最后一个字符,请尝试以下操作:
$ input=foobar; echo ${input:${#input}-1:1}
r
您到底想做什么?
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。