以相反的顺序打印bash参数

时间:2015-09-18 08:19:59

标签: bash

我必须编写一个脚本,它将获取所有参数并反向打印它们。

我已经找到了解决方案,但发现它非常糟糕。你有更明智的想法吗?

#!/bin/sh
> tekst.txt

for i in $* 
do
    echo $i | cat - tekst.txt > temp && mv temp tekst.txt
done

cat tekst.txt

4 个答案:

答案 0 :(得分:3)

可以做到这一点

Public Sub Sample()
'
' Sample Macro
'
    ActiveWorkbook.RefreshAll

End Sub

这使用以下
c style for loop
Parameter indirect expansion (页面底部for (( i=$#;i>0;i-- ));do echo "${!i}" done

${!i}这是脚本的参数数量

答案 1 :(得分:1)

通过空格

反转一个简单的字符串

简单地:

#!/bin/sh
o=
for i;do
    o="$i $o"
    done
echo "$o"

将作为

./rev.sh 1 2 3 4
4 3 2 1

或者

./rev.sh world! Hello
Hello world!

如果您需要按参数

输出一行

只需将echo替换为printf "%s\n"

#!/bin/sh
o=
for i;do
    o="$i $o"
    done

printf "%s\n" $o

反转字符串数组

如果你的参数可以包含空格,你可以使用bash数组:

#!/bin/bash

declare -a o=()

for i;do
    o=("$i" "${o[@]}")
    done

printf "%s\n" "${o[@]}"

样品:

./rev.sh "Hello world" print will this
this
will
print
Hello world

答案 2 :(得分:1)

你可以使用这个衬垫:

echo $@ | tr ' ' '\n' | tac | tr '\n' ' '

答案 3 :(得分:0)

击:

#!/bin/bash
for i in "$@"; do
    echo "$i"
done | tac

将此脚本称为:

./reverse 1 2 3 4

它会打印出来:

4
3
2
1