Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/bash/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
bash脚本中字符串变量的奇怪行为…请帮助!_Bash_String - Fatal编程技术网

bash脚本中字符串变量的奇怪行为…请帮助!

bash脚本中字符串变量的奇怪行为…请帮助!,bash,string,Bash,String,我快发疯了…让我解释一下 我有一个非常简单的Bash脚本,其中有一个函数,接收3个参数。这些参数都是字符串。一切都很正常,直到我必须向函数传递一个带空格的字符串 我还有一些测试代码来调用函数(其名称为substracFromFile): 只要传递的字符串没有空格,这就可以正常工作。当我调用函数时,字符串似乎是可以的,但我不明白为什么一旦调用函数,字符串就会被拆分…我肯定这是一件很无聊的事情,但我就是不明白 提前感谢,, Alex你问题的部分与其他部分不一致。例如: FILE="subversio

我快发疯了…让我解释一下

我有一个非常简单的Bash脚本,其中有一个函数,接收3个参数。这些参数都是字符串。一切都很正常,直到我必须向函数传递一个带空格的字符串

我还有一些测试代码来调用函数(其名称为substracFromFile):

只要传递的字符串没有空格,这就可以正常工作。当我调用函数时,字符串似乎是可以的,但我不明白为什么一旦调用函数,字符串就会被拆分…我肯定这是一件很无聊的事情,但我就是不明白

提前感谢,,
Alex

你问题的部分与其他部分不一致。例如:

FILE="subversion.conf"

echo "FILE IS $FICHERO"
但我假设这些都是发帖时的错误

正如注释中提到的那样,您需要引用包含空格的变量。特别是,此行应在变量周围加引号:

substracFromFile "$PATTERN" "$HEADERPATTERN" "$FILE"
另外,我不明白为什么要使用
echo
来设置以下行中的变量:

PATTERN=`echo -e '<Location test14>'`
它的值为“value”newline,“tab”escapes


此外,我建议养成习惯,不要对变量名使用所有大写字母。这将减少与Bash的内置变量发生名称冲突的机会。

您的问题部分与其他部分不一致。例如:

FILE="subversion.conf"

echo "FILE IS $FICHERO"
但我假设这些都是发帖时的错误

正如注释中提到的那样,您需要引用包含空格的变量。特别是,此行应在变量周围加引号:

substracFromFile "$PATTERN" "$HEADERPATTERN" "$FILE"
另外,我不明白为什么要使用
echo
来设置以下行中的变量:

PATTERN=`echo -e '<Location test14>'`
它的值为“value”newline,“tab”escapes


此外,我建议养成习惯,不要对变量名使用所有大写字母。这将减少与Bash内置变量发生名称冲突的机会。

尝试在所有变量中添加双引号。在所有变量中添加双引号。Dennis,你说得对,这些只是打字错误,我在发布时将脚本从西班牙语翻译成英语……对不起。这里的问题是,当我在函数中得到参数时,如果它们有空格,就会弄乱。我将尝试使用带引号的参数调用函数,不确定是否已经尝试过了。如果我在变量名方面取得任何进展,我会告诉您:)Regardsy您是对的,在调用函数时引用参数解决了问题…不过我想了解原因。。。再次感谢Alex@AlejandroVK:引用参数可防止它们在空白处拆分(包含在
IFS
变量中的字符-通常为空格、制表符和换行符)。这对于大多数(如果不是所有的话)Unix shell来说都很常见。嗨,丹尼斯,你说得对,这些只是打字错误,我在发帖的时候把剧本从西班牙语翻译成了英语……对不起。这里的问题是,当我在函数中得到参数时,如果它们有空格,就会弄乱。我将尝试使用带引号的参数调用函数,不确定是否已经尝试过了。如果我在变量名方面取得任何进展,我会告诉您:)Regardsy您是对的,在调用函数时引用参数解决了问题…不过我想了解原因。。。再次感谢Alex@AlejandroVK:引用参数可防止它们在空白处拆分(包含在
IFS
变量中的字符-通常为空格、制表符和换行符)。这对于大多数(如果不是所有的话)Unix shell来说都很常见。和。
PATTERN='<Location test14>'
PATTERN=$'value\nwith\tescapes'