我是一个帮助翻译文本的助手。
请注意参数中的空格。
b.sh:
这样做的问题在于,如果
我正在编写一个bash脚本,它接受一些可选参数。我想将它们翻译并传递给另一个脚本。然而,我很难优雅地传递这些可选参数。
以下是我用伪代码成功实现的大纲:
a.sh:
if arg1 in arguments; then
firstArg="first argument"
fi
if arg2 in arguments; then
secondArg="second argument"
fi
./b.sh $firstArg $secondArg "default argument"
请注意参数中的空格。
b.sh:
for arg in "$@"
do
echo $arg
done
我希望调用b.sh
,可以选择传入 firstArg
和 secondArg
,并且可以有一个默认参数,如下所示:
./b.sh $firstArg $secondArg "default argument"
这样做的问题在于,如果
$firstArg
或$secondArg
是带有空格的字符串,它们将被表示为多个参数,并且输出将类似于:first
argument
second
argument
default argument
好的,这很容易解决,我们可以通过在参数周围添加引号来捕获整个字符串,像这样:
./b.sh "$firstArg" "$secondArg" "defaultArg"
问题在于,如果例如firstArg
未设置,则会导致输出空行(因为它将解释""
作为参数),因此输出将类似于:
(blank line here)
second argument
defaultArg
我也尝试过构建字符串并将其传递给Shell脚本,但似乎这种方式也不起作用(即使我使用引号分隔参数,它仍将整个字符串解释为一个参数)。
请注意,在命令行中使用带引号的参数调用b.sh
可以正常工作。是否有一种方法可以在Bash脚本中模仿这种工作方式?
#!/bin/sh
还是#!/bin/bash
的代码吗? - Charles Duffy