Linux Bash命令在交互式shell中工作,但在脚本中不工作

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<$

Ohai, 还有一个Bash问题

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循环的计数器。