如何安全地呼应一个脚本的所有参数?[重复]

问题描述 投票:1回答:1

我正在写一个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
> 
bash echo
1个回答
2
投票

echo 命令的行为可能在不同的系统中有所不同。最安全的方法是使用 printf:

printf '%s\n' "$*"

根据 正弦:

不可能使用 echo 携带 在所有的POSIX系统中,除非这两个 -n (作为第一个参数)和转义序列被省略。

语句中的 printf 实用程序可用于可移植地模拟任何传统的 echo 实用性...


1
投票

这个在开头加了一个空格,但相当简单。

#!/bin/bash
echo "" "$@"

1
投票

使用 printf 而不是 echo:

#!/bin/bash

printf "%s " "$@"
printf "\n"

1
投票

你也可以使用printf。

#!/bin/bash
printf "%s\n" "$*"
© www.soinside.com 2019 - 2024. All rights reserved.