Shell简单语法

一、输入输出

1、输入

从控制台输入:

read -p "input name:" name

从文件获取输入

read -p "input name:" name < data1.txt

参数输入及使用:

$1    #使用第一个参数,依此类推使用其它参数

2、输出

echo输出:

echo "str" 
echo "hello wordl!"
echo $str

printf输出:

printf "%-10s %-8s %-4.2f\n" abc bc 1.23

二、变量、数组

1、变量声明及使用

#!/bin/bash

str="hello" #字符串变量
str1="li,\"$str\"!\n"  #字符串相加,和使用第一个字符串
echo $str1
echo ${str}
echo ${str:0:1} #输出第1个和第2个字符串
echo ${#str}   # 输出str字符串长度

2、数组声明及使用

list=(1 2 3 4)    #声明数组,用空格分隔开元素
list[0]=200      #将第一个元素改为200
a=${list[0]}     #读取第1个元素
echo ${list[@]}
    #输出所有元素
length=${#list[*]}  #输出数组长度

3、参数

$#传递到脚本的参数个数
$*以一个单字符串显示所有向脚本传递的参数。
$$脚本运行的当前进程ID号
$!后台运行的最后一个进程的ID号
$@与$*相同,但是使用时加引号,并在引号中返回每个参数。
常用的几个参数获取及使用

三、分支和循环

1、分支

if [ command ];then
   代码
elif [ command ];then
   代码
else
   代码
fi

1.1 数值判断

[ num1 -eq num2 ]      num1 和 num2 两数相等为真 , =
[ num1 -ne num2 ]      num1 和 num2 两数不等为真 ,!=
[ num1 -gt num2 ]      num1 大于 num1 为真 , >
[ num1 -ge num2 ]      num1 大于等于num2 为真, >=
[ num1 -lt num2 ]      num1 小于n um2 为真 , <
[ num1 -le num2 ]      num1 小于等于 num2 为真, <=

1.2 字符串判断

[ -z "str" ]   str的长度为零,则为真 ,即判断是否为空,空即是真;
[ -n "str" ]   str的长度非零,则为真 ,即判断是否为非空,非空即是真;
[ "str1" = "str2" ]   两个字符串相同,则为真;
[ "str1" != "str2" ]   字符串不相同,则为真;
[ "str1" ]   字符串不为空,则为真,与-n类似。

1.3 文件及目录

[ -e file ]        file 存在,则为真。
[ -d DIR ]         file 存在,且是一个目录,则为真。
[ -f file ]        file 存在,且是一个普通文件,则为真。

[ -r file ]      file 存在且是可读的,则为真。
[ -w file ]      file存在且是可写的,则为真。
[ -x file ]         file 存在且是可执行的,则为真。

2、循环

2.1 for循环

for 变量名 in 列表
do
  命令
done

举例:

for i in {1..5};
do 
    echo $i;
done
#{1..5}为取值范围1到5
 echo $i 输出当前的取值

for((i=1;i<=5;i++));
do 
    echo $i;
done
#使用(())双括号,可以支持C语言的一些命令

for i in `seq 5`;
do 
   echo $i;
done
#seq 5 与{1..5}效果一样

2.2 while循环

while  条件
do
      循环体
done

四、函数

function 函数名(){
	命令序列
}

或

函数名(){
    函数体
}

五、代码

#!/bin/bash
name="hello world"
echo $name
echo ${#name}
echo ${name:1:4}
list=(1 2 3 4 5)
list[1]=100
echo ${list[1]}
echo ${list[@]}
echo "number:$#"
echo "first:$1"
declare -A site
site["google"]="www.google.com"
site["runoob"]="www.runoob.com"
site["taobao"]="www.taobao.com"

echo ${site["runoob"]}

val=`expr $1 + $2 `
echo "val=$val"


#比较第一个参数和第2个参数是否相等
if test $1 -eq $2
then
	echo "equal"
else
	echo "it's"
fi

#输出list
for i in {1..10}
do
	echo "the value is $i"
done

index=0
#输出1到10
while [ $index -le 10 ]; do
echo "${index}"
let index=index+1
done


function printhello() {
	echo "Hello"
}

printhello


暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇