Bash 编写一个脚本,打印已传递给它的所有10个参数。UNIX终端

Bash 编写一个脚本,打印已传递给它的所有10个参数。UNIX终端,bash,command-line-arguments,Bash,Command Line Arguments,大家好,我正试图回答以下问题,但我很难解决它: 编写一个脚本,打印已传递给它的所有10个参数。脚本打印参数后,将参数移位2,然后再次打印所有参数 这是我的密码 #!/bin/sh echo "\$1 is now $1" shift echo "\$2 is now $2" shift echo "\$3 is now $3" echo "\$4 is now $4" echo "\$5 is now $5" echo "\$6 is now $6" echo "\$7 is now $7

大家好,我正试图回答以下问题,但我很难解决它:

编写一个脚本,打印已传递给它的所有10个参数。脚本打印参数后,将参数移位2,然后再次打印所有参数

这是我的密码

#!/bin/sh

echo "\$1 is now $1"
shift 
echo "\$2 is now $2"
shift 
echo "\$3 is now $3"
echo "\$4 is now $4"
echo "\$5 is now $5"
echo "\$6 is now $6"
echo "\$7 is now $7"
echo "\$8 is now $8"
echo "\$9 is now $9"
echo "\${10} is now ${10}"
这是我在unix终端上的代码

#!/bin/sh

echo "\$1 is now $1"
shift 
echo "\$2 is now $2"
shift 
echo "\$3 is now $3"
echo "\$4 is now $4"
echo "\$5 is now $5"
echo "\$6 is now $6"
echo "\$7 is now $7"
echo "\$8 is now $8"
echo "\$9 is now $9"
echo "\${10} is now ${10}"
谢谢

最简单的方法

x=0
for i in "$@"; do echo "\$$((++x)) is $i"; done
shift
shift
x=0
for i in "$@"; do echo "\$$((++x)) is now $i";done

您的“这个问题”是…?您发布了两次相同的代码。+1,但不完全正确:需要引用扩展名
$i
,以防止全局扩展-如果您作为参数传递了
'*'
,您就不想打印当前目录中的文件列表。@charlesduff很好,看起来格尼奥夫击败了我。