在 bash 中不使用格式字符串打印文本
printing text without use of format string in bash
一直在 printf "text"
从 bash 脚本打印一些文本。使用没有格式字符串的 printf
是否有效?
将整个消息放入格式字符串中是合理的做法,前提是它不包含任何动态数据。只要您可以完全控制字符串(即,它要么只是一个固定字符串,要么是从一组固定字符串中选择的一个,或者类似的东西),并且您已经使用该控件来确保它不包含任何意外的转义字符,其中的所有 %
字符都加倍(使它们成为文字,而不是格式说明符),并且字符串不以 -
.
开头
基本上,如果它是一个固定的字符串并且没有明显失败,它将始终如一地工作。
但是如果它包含任何类型的动态数据——文件名、user-entered 数据,任何类似的东西——你应该将格式说明符放在格式字符串中,并将动态数据放在单独的参数中。
所以这些都可以:
printf 'Help, Help, the Globolinks!\n'
printf 'Help, Help, the %s!\n' "$monster_name"
但这不是:
printf "Help, Help, the $monster_name!\n" # Don't do this
一直在 printf "text"
从 bash 脚本打印一些文本。使用没有格式字符串的 printf
是否有效?
将整个消息放入格式字符串中是合理的做法,前提是它不包含任何动态数据。只要您可以完全控制字符串(即,它要么只是一个固定字符串,要么是从一组固定字符串中选择的一个,或者类似的东西),并且您已经使用该控件来确保它不包含任何意外的转义字符,其中的所有 %
字符都加倍(使它们成为文字,而不是格式说明符),并且字符串不以 -
.
基本上,如果它是一个固定的字符串并且没有明显失败,它将始终如一地工作。
但是如果它包含任何类型的动态数据——文件名、user-entered 数据,任何类似的东西——你应该将格式说明符放在格式字符串中,并将动态数据放在单独的参数中。
所以这些都可以:
printf 'Help, Help, the Globolinks!\n'
printf 'Help, Help, the %s!\n' "$monster_name"
但这不是:
printf "Help, Help, the $monster_name!\n" # Don't do this