空格作为ksh脚本的参数

Lui*_*cía 1 linux whitespace ksh escaping

假设您有以下脚本:

#!/usr/bin/ksh

for element in $@
    do
            echo $element
done
Run Code Online (Sandbox Code Playgroud)

然后使用以下命令执行脚本:

./myscript.ksh "my element"
Run Code Online (Sandbox Code Playgroud)

预期产量应为:

my element
Run Code Online (Sandbox Code Playgroud)

但是空格被视为每个参数的分隔符,获得:

my
element
Run Code Online (Sandbox Code Playgroud)

我该如何逃离空白?

谢谢

Ola*_*che 5

你必须加$@双引号:

#!/usr/bin/ksh

for element in "$@"
do
    echo $element
done
Run Code Online (Sandbox Code Playgroud)

您可以通过全部省略来获得相同的输出in "$@":

#!/usr/bin/ksh

for element
do
    echo $element
done
Run Code Online (Sandbox Code Playgroud)