程序来自《鸟哥的linux私房菜》
#/bin/bash
#Program:
# Program create three files,which named by user's input
# and date command
#History
#2011/02/01 ly First release
PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:~/bin
export PATH
echo -e "I will use 'touch' command to create 3 files. "
read -p "Please input your filename :" fileuser
filename=${fileuser:-"filename"}
date1=$ (date --date='2 days ago' +%Y%m%d)
date2=$ (date --date='1 days ago' +%Y%m%d)
date3=$ (date +%Y%m%d)
file1=${filename}${date1}
file2=${filename}${date2}
file3=${filename}${date3}
touch "$file1"
touch "$file2"
touch "$file3"
自己犯的错误:
1、date1=$ (date --date='2 days ago' +%Y%m%d)
第一个:--date之间不能有空格,不能写成-- date
第二个:' +%处,此处的单引号和加号之间必须要有空格,加号和百分号之间没有空格。
2、read -p "Please input your filename :" fileuser
在此处双引号与fileuser变量之间应该有一个空格,正确的格式应该是:read -p "Please input your filename :" fileuser
此句的意思意思表示从键盘输入中读取一个值赋给变量fileuser
filename=${fileuser:-"filename"}#若变量fileuser的值不为null就把输入的值赋给filename,若是null就将字符串filename赋值给变量filename。为变量设置预设值的意思,防止用户多次输入回车键而给文件错误命名.
PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:~/bin
#PATH的值是一系列目录,当您运行一个程序时,Linux在这些目录下进行搜寻用以下命令可以设置PATH的值:
直接用export命令
[root@localhost test]# ll
总用量 4
-rwx------ 1 root root 32 10月 25 13:02 hellow.sh
[root@localhost test]# echo $PATH #显示$PATH变量
/usr/kerberos/sbin:/usr/kerberos/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/usr/X11R6/bin:/root/bin
[root@localhost test]# cd /
[root@localhost /]# export PATH=/data/test:$PATH #在$PATH中加入脚本路径
[root@localhost /]# export|grep test #查看$PATH
declare -x OLDPWD="/data/test"
declare -x PATH="/data/test:/usr/kerberos/sbin:/usr/kerberos/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/usr/X11R6/bin:/root/bin"
# .bashrc
# User specific aliases and functions
alias rm=rm -i
alias cp=cp -i
alias mv=mv -i
# Source global definitions
if [ -f /etc/bashrc ]; then
. /etc/bashrc
fi
此处资料的原文来自: http://www.online990.com/htm/20091025/79.htm
script执行方式的区别
1、利用直接执行的方式来执行script
直接命令执行或者利用bash(或sh)来执行脚本时,该script都会用一个新的bash环境来执行脚本内的命令。当子进程完成后,子进程内的各项变量或操作将会结束而不会传回到父进程中
2、利用source来执行脚本:在父进程中执行