以相反的顺序打印bash参数

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了以相反的顺序打印bash参数相关的知识,希望对你有一定的参考价值。

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

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

#!/bin/sh
> tekst.txt

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

cat tekst.txt
答案

可以做到这一点

for (( i=$#;i>0;i-- ));do
        echo "${!i}"
done

这使用以下 c style for loop Parameter indirect expansion${!i}towards页面底部)

$#这是脚本的参数数量

另一答案

你可以用这个衬垫:

echo $@ | tr ' ' '
' | tac | tr '
' ' '
另一答案

Reversing a simple string, by spaces

只是:

#!/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!

If you need to output one line by argument

只需用echo替换printf "%s "

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

printf "%s
" $o

Reversing an array of strings

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

#!/bin/bash

declare -a o=()

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

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

样品:

./rev.sh "Hello world" print will this
this
will
print
Hello world
另一答案

庆典:

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

称这个脚本如下:

./reverse 1 2 3 4

它将打印:

4
3
2
1

以上是关于以相反的顺序打印bash参数的主要内容,如果未能解决你的问题,请参考以下文章

彩色字符串以相反的顺序打印而不是向前

为啥这两个变量之一以相反的顺序打印到文件中?

如何以相反的字节顺序打印变量?

编写一个c ++函数,提示用户输入整数并将其转换为二进制并以相反的顺序打印[重复]

以相反的顺序打印数字的数字

使用 range() 以相反的顺序打印列表?