shell入门(一)

来源:互联网 发布:java 时间string转date 编辑:程序博客网 时间:2024/06/05 00:11

echo -n 不换行输出
echo -e 处理特殊字符
read -p “please input a number” x 提示输入一个数,并赋值给x
case 用法

case $x in    1)  echo 'You select 1'    ;;    2)  echo 'You select 2'    ;;    *)  echo 'You do not select a number between 1 to 4'    ;;esac

判断
if [ ansge3aans -le 9 ]
使用函数

#!/bin/shRED_COLOR='\E[1;31m'GREEN_COLOR='\E[1;32m'YELLOW_COLOR='\E[1;33m'BLUE_COLOR='\E[1;34m'RES='\E[0m'function usage(){    echo "USAGE: $0 {1|2|3|4}"    exit 1}function menu(){    cat <<END    1.apple    2.pear    3.bananaEND}function chose(){    read -p "pls input your choice:" fruit    case "$fruit" in        1)          echo -e "${RED_COLOR}apple${RES}"          ;;        2)          echo -e "${GREEN_COLOR}pear${RES}"           ;;        3)          echo -e "${YELLOW_COLOR}banana${RES}"           ;;        *)          usage    esac}function main(){     menu     chose}main//统计传入的参数个数 脚本名字$#$0//连接两个字符串v1="hello"v2="world"v3=$v1$v2//计算两个数的和A=1B=2let v3=$A+$Becho $v3echo $(($A+$B))  # 方法 2echo $[$A+$B]    # 方法 3expr $A + $B     # 方法 4echo $A+$B | bc  # 方法 5awk 'BEGIN{print '"$A"'+'"$B"'}'   # 方法 6//如何获取某一行(取第五行)方法一:head -5 test.txt|tail -1方法二:cat test.txt|sed -n '7p'  //-n是指只显示生效的那行//后台运行nohup  command 永久执行,和用户端没有关系,断开ssh连接也不会影响到其执行,该命令执行之后会产生子文件,该子文件位于当前目录,相当于日志文件command &      后台执行,当用户推出(挂起)的时候,命令行业会跟着退出比较巧妙的命令是nohup command &     使命令永久在后台执行//怎么注释语句#//'和"以及`(反引号)区别'   把括起来的部分当做字符串"   如果字符串里有变量,那么会使用变量的值来代替该变量`   把括起来的部分当做命令执行//调用另一个脚本exec ./a.sh         //执行之后,该进程剩下的部分不会再执行,而是转至执行a.sh脚本source  ./a.sh      //执行完该脚本之后,继续回来继续执行剩下的脚本fork    ./a.sh      //直接运行脚本,会以当期那shell为父进程,产生新的进程//使用echo命令获取字符串变量的一部分echo ${variable:x:y}   //取字符串variable中的x到y的位置的字符//根据某个字符提取部分数据variable="User:123:321:/home/dir/aa"echo ${variable#*:*:}或者echo ${variable##*:}   运行结果321:/home/dir/aa//如果只需要显示Userecho ${variable%:*:*:*}或者echo ${variable%%:*}//xargs的使用 执行下列命令会分行显示  -n1表示每次传一个参数过去,我刚开始的时候用,把参数隔开了,然后就没有分行显示echo '1 , 2 3 4'|xargs -n1  //修改bash的标准分割符为:IFS=":"//获取变量的长度${#variable}//打印变量的最后5个字符echo ${variable: -5}   //注意-5前有个空格${variable:-10}            //如果variable未赋值,则输出5,如有赋值,只输出原值//转换为大写tr '[:lower:]' '[:upper:]'//删除字符串中的所有空格echo $string|tr -d " "//写出输出数字 0 到 100 中 3 的倍数(0 3 6 9 …)的命令 ?for i in {0..100..3}; do echo $i; done//[ $a == $b ] 和 [ $a -eq $b ] 有什么区别[ $a == $b ] - 用于字符串比较[ $a -eq $b ] - 用于数字比较//如何检查字符串是否以字母 "abc" 开头 ?[[ $string == abc* ]]//如何列出以 ab 或 xy 开头的用户名 ?egrep "^ab|^xy" /etc/passwd|cut -d: -f1// $* 和 $@ 有什么区别*$* - 以一个字符串形式输出所有传递到脚本的参数$@ - 以 $IFS 为分隔符列出所有传递到脚本中的参数
原创粉丝点击