shell 脚本 您所在的位置:网站首页 shell脚本显示执行结果不正确 shell 脚本

shell 脚本

2023-12-06 01:52| 来源: 网络整理| 查看: 265

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 实验室设备网 版权所有