Linux Bash命令在交互式shell中工作,但在脚本中不工作
Ohai, 还有一个Bash问题Linux Bash命令在交互式shell中工作,但在脚本中不工作,linux,bash,Linux,Bash,Ohai, 还有一个Bash问题 for i in ${#input}; do echo ${input:$i:1}; done 可以在交互式bash中工作,但不能在shell脚本中工作。输入是一个基于参数的变量。设置得很好。 有什么想法吗?不确定它在交互式shell中是如何为您工作的,此表达式: ${#input} 如果input是数组变量,则返回第一个元素中的字符数 否则 将返回输入变量中的字符数 根据您的评论编辑: 我认为您正在尝试执行以下代码: for ((i=0; i<$
for i in ${#input}; do echo ${input:$i:1}; done
可以在交互式bash中工作,但不能在shell脚本中工作。输入是一个基于参数的变量。设置得很好。
有什么想法吗?不确定它在交互式shell中是如何为您工作的,此表达式:
${#input}
- 如果
是数组变量,则返回第一个元素中的字符数input
否则 - 将返回
变量中的字符数输入
for ((i=0; i<${#input}; i++))
do
echo ${input:$i:1}
done
for((i=0;i不确定它在交互式shell中如何工作,此表达式:
${#input}
- 如果
input
是数组变量,则返回第一个元素中的字符数
否则
- 将返回
输入
变量中的字符数
根据您的评论编辑:
我认为您正在尝试执行以下代码:
for ((i=0; i<${#input}; i++))
do
echo ${input:$i:1}
done
for((i=0;i我看不出这段代码的用途-它相当于一个回音
)
说明:
${#input}
是input
变量内容的长度。它始终是一个数字,因此循环将始终执行一次。$i
然后修改为包含该变量长度
然后,${input:$i:1}
表示“来自input
变量的1个字符,从偏移量$i
开始,它等于变量的长度,因此超过了它的结尾。即,${input:$i:1}
始终是一个空字符串。因此,您的代码可以简化为:
echo
例如,如果$input
是foobar
,那么${#input}
是6
,循环执行此命令一次:echo${input:6:1}
。此处的偏移量是基于零的,因此6
刚刚超过$input
的最后一个字符。如果您试图获取变量的最后一个字符,请尝试以下操作:
$ input=foobar; echo ${input:${#input}-1:1}
r
你到底想做什么?我看不出这段代码的目的-它相当于一个回声
说明:
${#input}
是input
变量内容的长度。它始终是一个数字,因此循环将始终执行一次。$i
然后修改为包含该变量长度
然后,${input:$i:1}
表示“来自input
变量的1个字符,从偏移量$i
开始,它等于变量的长度,因此超过了它的结尾。即,${input:$i:1}
始终是一个空字符串。因此,您的代码可以简化为:
echo
例如,如果$input
是foobar
,那么${#input}
是6
,循环执行此命令一次:echo${input:6:1}
。此处的偏移量是基于零的,因此6
刚刚超过$input
的最后一个字符。如果您试图获取变量的最后一个字符,请尝试以下操作:
$ input=foobar; echo ${input:${#input}-1:1}
r
你到底想做什么?你的一个陈述是错误的。可能有帮助:你的脚本的第一行是!/bin/sh
还是!/bin/bash
?你的一个陈述是错误的。可能有帮助:你的脚本的第一行是!/bin/sh
还是!/bin/bash
?但是在这种情况下,$i
是什么?根据你的代码,循环只执行一次。@thkala:lol:)我希望我有这样的能力。但是,${#input};
中的我没有任何意义,根据他的代码,我只是觉得他/她可能正试图一个字符一个字符地打印输入字符串(当然,我可能完全错了)是的,这就是我试图做的。$I是for循环的计数器。但是在这种情况下,$I
是什么呢?根据你的代码,for循环只执行一次。@thkala:lol:)我希望我有这样的能力。但是,${input}中的for I
毫无意义,根据他的代码,我觉得他/她可能正试图一个字符一个字符地打印输入字符串(当然,我可能完全错了)。是的,我就是这么做的。$I是for循环的计数器。