我正在写一个bash脚本,它必须呼应所有的参数,这是很难做到的。
天真的实现是这样的。
#!/bin/bash
echo "$@"
然而,在输入诸如:
> ./script.sh -n -e -v -e -r
-v -e -r>
我怎样才能让这个脚本更强大,从而使上面的结果是:
> ./script.sh -n -e -v -e -r
-n -e -v -e -r
>
echo
命令的行为可能在不同的系统中有所不同。最安全的方法是使用 printf
:
printf '%s\n' "$*"
根据 正弦:
不可能使用
echo
携带 在所有的POSIX系统中,除非这两个-n
(作为第一个参数)和转义序列被省略。语句中的
printf
实用程序可用于可移植地模拟任何传统的echo
实用性...
这个在开头加了一个空格,但相当简单。
#!/bin/bash
echo "" "$@"
使用 printf
而不是 echo
:
#!/bin/bash
printf "%s " "$@"
printf "\n"
你也可以使用printf。
#!/bin/bash
printf "%s\n" "$*"