shell 脚本 | 您所在的位置:网站首页 › shell脚本显示执行结果不正确 › shell 脚本 |
shell 脚本-输出命令(echo 与 printf)
用于字符串的输出 echo 命令 基本输出使用 echo string 命令输入 string 内容, 内容中的转义字符, 使用变量等规则参考字符串规则 echo "Hello World" echo "\"Hello World\"" echo 'Hello World' echo 'Hello World\"'运行结果: Hello World “Hello World” Hello World Hello World" 使用转义使用参数 -e 可以使 echo 命令启用转义 例如: 可以使用转义进行换行或不换行操作 # 换行 echo -e "Line 1\nLine 2" # 不换行 echo -e "Hello \c" echo "World"运行结果: Line 1 Line 2 Hello World ##$ 输出到文件 使用 echo string > file 可以将字符串内容输入到文件中, file 为文件路径, 当路径表示的文件不存在时, 会自动生成文件, 当 file 为相对路径时, 相对的时执行命令的环境而不是文件所在的环境 例如: 在 /a 目录下执行 /b/test.sh, test.sh 内容为 echo "Hello World" > ./log.txt, 执行后会生成文件 /a/log.txt 而不是 /b/log.txt echo "Hello World" > ./log.txt如果 file 已经存在, 输出内容将直接覆盖 file 内容 显示命令执行结果使用 反引号 ` 包裹可以在 echo 中执行一些命令 echo "当前时间: `date`" echo "1 + 2 = `expr 1 + 2`"运行结果: 当前时间: 2022年 2月23日 星期三 15时53分25秒 CST 1 + 2 = 3 printf 命令printf 与 echo 都是对字符串进行输出的命令, print 与 echo 的不同点: printf 可以对字符串进行格式化, 定制字符串的宽度, 对齐等默认的 printf 不会像 echo 自动添加换行符,我们可以手动添加 \nprintf 由 POSIX 标准所定义,因此使用 printf 的脚本比使用 echo 移植性好 直接输入如果直接使用 printf string 会直接输出 string 内容 printf "Hello World\n"运行结果: Hello World 格式化输出如果需要格式化输出, 则需要使用 printf format-string [arguments...], format-string: 为格式控制字符串, arguments: 为参数列表; printf "%s %d\n" "Hello World" 123格式控制字符串 控制符说明用法%s输出一个字符串%s 或 %-ns, - 表示左对齐,没有则表示右对齐, n 表示以n个字符宽显示, 如果不足则自动以空格填充,超过也会将内容全部显示出来。%c输出一个字符%c, 如果对应参数是字符串, 则显示第一个字符%d输出一个整型%d, 如果对应参数应该是整型或整型字符串, 否则报错, 空字符串转化为 0%f以小数形式输出%f 或 %-n.mf, - 表示左对齐, n 表示显示长度, m 表示小数的位数 printf "%-10s %-10s\n" "Hello" "World" # 每个字符串10个字符宽度 printf "%c\n" "c" printf "%c\n" "chart" # 只会输出 chart 的第一个字符 c printf "%d\n" 123 printf "%d\n" "123" printf "%d\n" "a" # 报错 printf "%f\n" 123 printf "%-10.2f %-10.2f\n" '123' 123 # 每个数字10个字符宽度并保留两位小数运行结果: Hello World c c 123 123 xxxxxxx printf: a: invalid number 0 123.000000 123.00 123.00 当参数少于格式控制符 当对应位置没有参数是, 那么就用 NULL 代替 printf "%s NULL 转字符串为 \"%s\" %c %d %f\n" "empty-test: "运行结果: empty-test: 0 0.000000 NULL 转化为字符串或字符显示是空字符, 转化为数字显示为 0 当参数多于格式控制符 如果参数多于格式控制符指定时, 多于参数任会按照既定格式输出, 剩余参数不够, 按照参数少于格式控制符的规则, 既为 NULL printf "%s %s %c %d %f\n" "str1" "str2" "c" 123 123 "string"运行结果: str1 str2 c 123 123.000000 string 0 0.000000 上面代码相当于 printf "%s %s %c %d %f\n" "str1" "str2" "c" 123 123 printf "%s %s %c %d %f\n" "string" |
CopyRight 2018-2019 实验室设备网 版权所有 |