shell入门(一)

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/sh
RED_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.banana
END
}
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=1
B=2
let v3=$A+$B
echo $v3
echo $(($A+$B))  # 方法 2
echo $[$A+$B]    # 方法 3
expr $A + $B     # 方法 4
echo $A+$B | bc  # 方法 5
awk 'BEGIN{print '"$A"'+'"$B"'}'   # 方法 6

如何获取某一行(取第五行)
方法一:head -5 test.txt|tail -1
方法二:cat test.txt|sed -n '7p'  //-n是指只显示生效的那行

后台运行
nohup  command 永久执行,和用户端没有关系,断开ssh连接也不会影响到其执行,该命令执行之后会产生子文件,该子文件位于当前目录,相当于日志文件
command &      后台执行,当用户推出(挂起)的时候,命令行也会跟着退出
比较巧妙的命令是
nohup command &     使命令永久在后台执行

怎么注释语句
注释一行#
注释多行
<<COMMENT
我要注释的内容
COMMENT '和"以及`(反引号)区别 ' 把括起来的部分当做字符串 " 如果字符串里有变量,那么会使用变量的值来代替该变量 ` 把括起来的部分当做命令执行 调用另一个脚本 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 如果只需要显示User echo ${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 为分隔符列出所有传递到脚本中的参数
原文地址:https://www.cnblogs.com/biaopei/p/7730585.html