对于“GNU bash,版本 4.2”之前的 Bash 版本,是否有任何等效-v
的test
命令选项替代方案?例如:
shopt -os nounset
test -v foobar && echo foo || echo bar
# Output: bar
foobar=
test -v foobar && echo foo || echo bar
# Output: foo
Run Code Online (Sandbox Code Playgroud) 当我阅读这个答案时,作者使用此命令将定界符的结果放入变量:
read -r -d '' VAR <<'EOF'
abc'asdf"
$(dont-execute-this)
foo"bar"''
EOF
Run Code Online (Sandbox Code Playgroud)
我对这个选项有点困惑-d
。从该命令的帮助文本中read
:
-d delim
continue until the first character of DELIM is read, rather than newline
Run Code Online (Sandbox Code Playgroud)
因此,如果我将空字符串传递给-d
,则意味着读取直到第一个空字符串。这是什么意思?作者在答案下评论-d ''
说使用NUL字符串作为分隔符。这是真的吗(空字符串意味着 NUL 字符串)?为什么不使用类似-d '\0'
或-d '\x0'
等的东西?
有人能告诉我a=''
bash 脚本中的含义是什么吗?
例如:
#!/bin/bash
a=''
case $@ in
testfile)
for list in $(cat $1);do
useradd -s /bin/false $list
done
;;
$a)
echo "empty"
;;
*)
echo "wrong character"
;;
esac
Run Code Online (Sandbox Code Playgroud)
谢谢