我不明白这行shell脚本.while语句是否需要设置$的'test'或[]或[[]]表达式?到1还是0?如何
while IFS= read -r -d $'\0'; do ...; done
Run Code Online (Sandbox Code Playgroud)
去做?任何帮助理解这里的语法非常感谢.
rua*_*akh 13
在Bash中,运行命令,环境变量设置为(以及所有其他环境变量正常继承).因此运行命令时将环境变量设置为空字符串(表示没有字段分隔符).varname=value commandvarnamevalueIFS= read -r -d $'\0'read -r -d $'\0'IFS
由于每当成功读取输入并且没有遇到文件结尾时read返回成功(即设置$?为0),总体效果是循环一组NUL分隔的记录(保存在变量中REPLY).
while语句是否需要设置$的'test'或[]或[[]]表达式?到1还是0?
test而[ ... ]和[[ ... ]]实际上不是表现,而是命令.在Bash中,每个命令都会返回成功(设置$?为0)或失败($?通常设置为非零值1).
(顺便说一句,正如上面注释中的nosid注释,-d $'\0'相当于.Bash-d ''变量在内部表示为C风格/ NUL终止的字符串,因此你不能在字符串中真正包含NUL;例如,echo $'a\0b'只是打印a. )