小编Cla*_*dio的帖子

当字符串是左括号时,shell 括号测试出错

我曾经相信引用字符串总是一个很好的做法,以避免让 shell 解析它。

然后我遇到了这个:

$ x='('
$ [ "$x" = '1' -a "$y" = '1' ]
bash: [: `)' expected, found 1
Run Code Online (Sandbox Code Playgroud)

试图隔离问题,得到同样的错误:

$ [ '(' = '1' -a '1' = '1' ]
bash: [: `)' expected, found 1
Run Code Online (Sandbox Code Playgroud)

我解决了这样的问题:

[ "$x" = '1' ] && [ "$y" = '1' ]
Run Code Online (Sandbox Code Playgroud)

我仍然需要知道这里发生了什么。

shell test

27
推荐指数
2
解决办法
1653
查看次数

为 bash 脚本设置 IFS

典型案例是IFS= read
该主题在此线程中得到了很好的解释:
为什么在 bash 中合法的命令之前设置变量?
为了有一个完整的图片,如果你们能解释为什么下面的脚本不能像(我)预期的那样工作,我将不胜感激。
my_script

#!/bin/bash

echo "$var1"
echo -n "$IFS" | xxd -p
echo "$var2"

exit 0
Run Code Online (Sandbox Code Playgroud)

打电话my_script

var1=foo IFS= var2=bar my_script
Run Code Online (Sandbox Code Playgroud)

输出:

foo
20090a
bar
Run Code Online (Sandbox Code Playgroud)

如您所见IFS,没有变化,仍然设置为默认值。调用 as 时
如何read获得自定义? 先感谢您IFSIFS= read

bash environment-variables read

7
推荐指数
1
解决办法
1271
查看次数

标签 统计

bash ×1

environment-variables ×1

read ×1

shell ×1

test ×1