Dan*_*oti 2 bash shell-script arguments
我几乎是 bash 新手。如果这个问题在其他地方得到了回答,我很抱歉,但我没有找到任何我能理解的东西。
我正在做一个 if 条件:
if [ $inputstring = $INPUT ]
Run Code Online (Sandbox Code Playgroud)
这一行给了我一个“参数太多]错误”。我也试过:
if [ "$inputstring" = "$INPUT" ]
Run Code Online (Sandbox Code Playgroud)
但是当我确定变量具有相同的值(通过回声)时,我的程序不会进入“if”。
有人可以帮忙吗?谢谢
如果变量包含空格,您会得到“参数过多”,这会导致未加引号的扩展拆分为多个单词。因此,确实,您必须引用其中的所有变量[ .. ]以防止这种情况发生。
if你写的第二个( if [ "$inputstring" = "$INPUT" ]) 是正确的if,如果两个变量确实包含相同的数据,它将运行 的主分支。但是根据它们的来源,您可能会在其中包含额外的空白,或者其他难以看到的东西。使用 egprintf "<%q>\n" "$INPUT"以明确的格式查看变量内容。(输出格式取决于变量的值,但通常它会打印引用和/或显示带有反斜杠转义的特殊字符。)
例如,这里的变量不包含相同的数据,后者有一个尾随空格:
$ foo=123
$ bar="123 "
$ echo $foo $bar
123 123
$ if [ "$foo" = "$bar" ]; then echo same; else echo not same; fi
not same
$ printf "<%q>\n" "$foo" "$bar"
<123>
<123\ >
Run Code Online (Sandbox Code Playgroud)