Bash 读取与脚本执行相同行中的用户输入

Bash 读取与脚本执行相同行中的用户输入,bash,shell,Bash,Shell,我有一个名为fib.sh的BASH脚本。脚本读取用户输入(数字)并执行计算。我想能打字 $ ./fib.sh 8 其中8是输入 目前,我必须等待下一行输入 $ ./fib.sh $ 8 剧本 #!/bin/bash read n a=0 b=1 count=1 fib=$a while [ $count -lt $n ]; do fib=$[$a+$b] a=$b b=$fib count=$[$count+1] done echo "fib $n

我有一个名为fib.sh的BASH脚本。脚本读取用户输入(数字)并执行计算。我想能打字

$ ./fib.sh 8
其中8是输入

目前,我必须等待下一行输入

$ ./fib.sh 
$ 8
剧本

#!/bin/bash

read n

a=0
b=1
count=1
fib=$a

while [ $count -lt $n ]; 
do
    fib=$[$a+$b]
    a=$b
    b=$fib
    count=$[$count+1]
done

echo "fib $n = $fib"

exit 0

因此,您希望将参数传递给脚本,而不是读取它。在这种情况下,使用
$1
,如下所示:

#!/bin/bash

n=$1 <---- this will take from the call of the script
echo "I have been given the parameter $n"

a=0
b=1
count=1
fib=$a

while [ $count -lt $n ]; 
do
    fib=$[$a+$b]
    a=$b
    b=$fib
    count=$[$count+1]
done

echo "fib $n = $fib"

exit 0
#/bin/bash

n=$1
$[…]
已弃用;改用
$(…)
(POSIX标准的一部分)。示例
fib=$($a+b))
@chepner您甚至不需要
$
内部:
$($a+b))
.True;我只是想先把代码从不推荐的语法中去掉;充分利用它的功能可以在以后实现。