#!/bin/bash这一行是表示使用/bin/bash作为脚本的解释器,这行要放在脚本的行首并且不要省略
脚本正文中以#号开头的行都是注释语句,这些行在脚本的实际执行过程中不会被执行。这些注释语句能方便我们在脚本中做一些注释或标记,让脚本更具可读性。
运行Bash脚本的方式:
# 使用shell来执行 $ sh hello.sh # 使用bash来执行 $ bash hello.sh 使用.来执行 $ . ./hello.sh 使用source来执行 $ source hello.sh 还可以让脚本本有者该执行权限,允许该用户执行该脚本 $ chmod u+rx hello.sh # 执行命令,这身就具有可执行权限,通过chmod命令可以修改: # 赋予脚本的所将使用脚本第一行指定的shell来执行,如果指定shell不存在,将使用系统默认shell来执行 $ ./hello.sh
遇到权限不够的提示,为什么,如何解决?
权限不够加sudo啊,可是你会发现
sudo cat /dev/null > /var/log/wtmp
一样会提示权限不够,为什么呢?因为sudo只能让cat命令以sudo的权限执行,而对于>这个符号并没有sudo的权限,我们可以使用
sudo sh -c "cat /dev/null > /var/log/wtmp "
sudo bash -c "cat /dev/null > /var/log/wtmp"
让整个命令都具有sudo的权限执行
/dev/null这个东西可以理解为一个黑洞,里面是空的(可以用cat命令看一看),什么东西都可以往里面扔,扔了就没了
vim cleanlog.sh
#!/bin/bash LOG_DIR=/var/log cd $LOG_DIR cat /dev/null > wtmp echo "logs cleaned up." exit
执行
由于脚本中含有对系统日志文件内容的清除操作,这要求要有管理员权限.不然会报permission denide错误
使用sudo命令调用管理员权限才能执行成功:
$ sudo ./cleanlogs.sh
#!/bin/bash这一行是表示使用/bin/bash作为脚本的解释器,这行要放在脚本的行首并且不要省略
脚本正文中以#号开头的行都是注释语句,这些行在脚本的实际执行过程中不会被执行。这些注释语句能方便我们在脚本中做一些注释或标记,让脚本更具可读性。
为什么cleanlogs.sh可以将log文件清除?
因为/dev/null ,里面是空的,什么东西都可以往里面扔,扔了就没了
vim test2.sh
#!/bin/bash echo "Hello";echo "World"; filename=ttt.sh if [ -e "$filename" ];then echo "File $filename exists";cp $filename $filename.bak else echo "File $filename not found";touch $filename fi;
vim test3.sh
#!/bin/bash varname=b case $varname in [a-z]) echo "abc" ;; [0-9]) echo "123" ;; esac;
反引号(`)
1.命令替换
反引号中的命令会优先执行,如:
$ cp `mkdir back` test.sh back $ ls
先创建了 back 目录,然后复制 test.sh 到 back 目录