Shell 的 echo 指令用于字符串的输出。命令格式:
(相关资料图)
echo string
echo "It is a test"echo It is a test
加不加引号效果一样
如果需要显示转义字符,则需要在转义字符前加上反斜杠 \
echo "\"It is a test\""echo \"It is a test\"
输出:
"It is a test""It is a test"
#!/bin/bashread name1 name2echo "name1:$name1 name2: $name2"
read为从标准输入中读取一行,并把输入行的每个字段的值指定给 shell 变量输出:
[root@liang shell]# ./shell01.shliang1 liang2 #此处为输入的变量name1:liang1 name2: liang2
#!/bin/bashecho -e "first line! \n" # -e 开启转义 \n换行echo "It is a test"echo -e "first line! \c" # -e 开启转义 \c不换行echo "It is a test"
输出:
[root@liang shell]# ./shell01.shfirst line! It is a testfirst line! It is a test
默认换行。
echo "It is a test" > myfile
echo "$name""输出:
$name\"
echo `date`echo `ls`
注意: 这里使用的是反引号 `, 而不是单引号 "。
显示当前日期及ls命令执行的结果[root@liang shell]# ./shell01.shMon Oct 26 18:13:26 CST 2020case_loop2.sh case_loop.sh def_function.sh for_loop2.sh for_loop.sh get_sys.sh homework1.sh homework.sh if_condiction.sh jisuanqi.sh one_shell.sh pass000.sh pass001.sh passwd_bk.sh shell01.sh shell02.sh sshd_config_bk sys1.txt sys.txt text0001.sh text0002.sh text0003.sh valiables.sh
printf 使用引用文本或空格分隔的参数,外面可以在 printf 中使用格式化字符串,还可以制定字符串的宽度、左右对齐方式等。默认 printf 不会像 echo 自动添加换行符,我们可以手动添加 \n。
printf 命令的语法:
printf format-string [arguments...]
参数说明:
format-string: 为格式控制字符串arguments: 为参数列表。#!/bin/bashprintf "%-10s %-8s %-4s\n" 姓名 性别 体重kg printf "%-10s %-8s %-4.2f\n" 郭靖 男 66.1234 printf "%-10s %-8s %-4.2f\n" 杨过 男 48.6543 printf "%-10s %-8s %-4.2f\n" 郭芙 女 47.9876
输出:
[root@liang shell]# ./shell01.sh姓名 性别 体重kg郭靖 男 66.12杨过 男 48.65郭芙 女 47.99
最常用的格式指示符有两个%s用于字符串,而%d或者%i用于十进制整数,%f用于浮点格式
%-10s 指一个宽度为10个字符(-表示左对齐,没有则表示右对齐),任何字符都会被显示在10个字符宽的字符内,如果不足则自动以空格填充,超过也会将内容全部显示出来。
#!/bin/bash# format-string为双引号printf "%d %s\n" 1 "abc"# 单引号与双引号效果一样 printf "%d %s\n" 1 "abc" # 没有引号也可以输出printf %s abcdef# 格式只指定了一个参数,但多出的参数仍然会按照该格式输出,format-string 被重用printf %s omn jkfprintf "%s\n" abc defprintf "%s %s %s\n" a b c d e f g h i j# 如果没有 arguments,那么 %s 用NULL代替,%d 用 0 代替printf "%s and %d \n"
输出内容:
[root@liang shell]# ./shell01.sh1 abc1 abcabcdefomnjkfabcdefa b cd e fg h ij and 0
\a: 输出警告声音;\b:输出退格键,也就是 Backspaced 键;\f:清除屏幕;\n:换行;\r:回车,也就是 Enter 键;\t:水平输出退格键,也就是 Tab 键;\v:垂直输出退格键,也就是 Tab 键;实例:新建一个文件 text0001.txt
ID Name PHP Linux MySQL Average1 Liming 82 95 86 87.662 Sc 74 96 87 85.663 Gao 99 83 93 91.66
直接输出:
[root@liang shell]# printf "%s" $(cat text0001.txt)IDNamePHPLinuxMySQLAverage1Liming82958687.662Sc74968785.663Gao99839391.66
输出结果十分混乱。这就是 printf 命令,如果不指定输出格式,则会把所有输出内容连在一起输出。其实文本的输出本身就是这样的,cat 等文本输出命令之所以可以按照格式漂亮地输出,那是因为 cat 命令已经设定了输出格式。那么,为了用 printf 输出合理的格式,应该这样做:
[root@liang shell]# printf "%s\t %s\t %s\t %s\t %s\t %s\t\n" $(cat text0001.txt)ID Name PHP Linux MySQL Average1 Liming 82 95 86 87.662 Sc 74 96 87 85.663 Gao 99 83 93 91.66
注意:在 printf 命令的单引号中输入的任何空格都不会反映到格式输出中,只有格式输出符号才能影响 printf 命令的输出结果。
因为我们的文档有6列,所以使用 6 个"%s"代表这 6 列字符串,每个字符串之间用"\t"分隔,也可以设定字符串长度;最后还要加入"\n",使得每行输出都换行,否则这些数据还是会连成一行的。