我有以下脚本:
#!/bin/bash
function consoleWriteLine() {
echo $* >&2
}
consoleWriteLine " indented by 4 spaces"
当我运行它时,我得到以下输出:
$ ./test.sh
indented by 4 spaces
我的 4 个空间去哪了?我该如何找回它们?
答案1
echo
只需在您的函数中引用:
function consoleWriteLine() {
echo "$*" >&2
}
echo
只是注意到多个参数被空格分隔,并将它们打印出来,分隔符为单身的空间。请参阅:
$ echo a b c
a b c
$ echo a b c
a b c
$ echo "a b c"
a b c
在最后一个例子中,字符串a b c
是一单一参数并echo
保持原样。
答案2
我自己也遇到过这个问题,
按照本博客您需要更改 IFS,因为默认情况下它包含空格,因此将“xxx yyy zzzz”视为 3 个字符串,它们之间有空格。
IFS='\n'
在命令之前将修复它,并取消设置 IFS 以删除更改
unset IFS