bashshell脚本编程
① 如何用shell编程打印出目录下的所有文件内容
1)看下面的脚本a1.sh,假设要显示目录/home/user/tmp/下面的所有的文件和(子)目录的名字:
$ cat a1.sh
#!/bin/bash
for file in /home/user/tmp/*
do
echo $file
done
2)假设目录/home/user/tmp/下面的所有的文件和(子)目录如下:
$ ls
1.txt 2.txt a1.sh a.sh b.sh email_back m1.doc tmp
3)运行脚本:
$ a1.sh (或者./a1.sh)
/home/user/tmp/1.txt
/home/user/tmp/2.txt
/home/user/tmp/a1.sh
/home/user/tmp/a.sh
/home/user/tmp/b.sh
/home/user/tmp/email_back
/home/user/tmp/m1.doc
/home/user/tmp/tmp
4)脚本a1.sh的作用只是显示文件和子目录的列表,要显示文件的内容,脚本继续改造,内容如下,看脚本a2.sh:
$ cat a2.sh
#!/bin/bash
for file in /home/shiqingd/tmp/*
do
echo $file
if [ -f $file ]; then
cat $file
fi
done
脚本a2.sh可以达到目的。
② linux的shell编程中#!/bin/sh和$bash是什么意思
#! /bin/sh 是指此脚本使用/bin/sh来解释执行,#!是特殊的表示符,其后面根的是此解释此脚本的shell的路径。 $bash $表示系统提示符,$ 表示此用户为普通用户,超级用户的提示符是#。 bash是shell的一种,是linux下最常用的一种shell。 $bash的意思是执行一个子shell,此子shell为bash。 要注意,在每个脚本的开头都使用"#!",这意味着告诉你的系统这个文件的执行需要指定一个解 释器.#!实际上是一个2字节[1]的魔法数字,这是指定一个文件类型的特殊标记, 换句话说, 在 这种情况下,指的就是一个可执行的脚本(键入man magic来获得关于这个迷人话题的更多详细 信息).在#!之后接着是一个路径名.这个路径名指定了一个解释脚本中命令的程序,这个程序可 以是shell,程序语言或者是任意一个通用程序.这个指定的程序从头开始解释并且执行脚本中 的命令(从#!行下边的一行开始),忽略注释.[2] 如: 1 #!/bin/sh 2 #!/bin/bash 3 #!/usr/bin/perl 4 #!/usr/bin/tcl 5 #!/bin/sed -f 6 #!/usr/awk -f 注意: #! 后边给出的路径名必须是正确的,否则将会出现一个错误消息,通常是 "Command not found",这将是你运行这个脚本时所得到的唯一结果. 如果在脚本的里边还有一个#!行,那么bash将把它认为是一个一般的注释行.