在bash中,操作系统强制执行的导致错误的命令行长度限制
argument list too long不适用于shell内置程序。
当
execve()系统调用返回错误代码时,将触发此错误
E2BIG。
execve()调用内置函数时不会涉及任何调用,因此不会发生错误。
因此,您建议的两个操作都是安全的:
cmd <<<"$string"写入
$string一个临时文件,该文件不需要作为argv元素(或环境变量,存储在相同的保留空间池中)传递;并且
printf'%sn' "$cmd"发生在外壳内部,除非已将外壳的配置(与一样)进行了修改
enable-nprintf以使用外部
printf实现。



