shell 命令格式

bash        #进入子shell

exit          #退出子shell

变量

  • 变量的赋值符号两边不能有空格,当变量的值引用另一个变量时,用 “ ” 将变量的值括起来。
  • " " 可以解析变量的值;' ' 不能解析变量的值,会当做字符串处理。
  • 设为环境变量可以在子程序(bash开启的子shell)中使用。

Var_name=value                #定义变量

echo $Var_name                #查看变量名

Var_name2="$Var_name"test                        #变量值引用变量,valuetsst

read -p "提示语" -t wait_time var_name        #用键盘输入变量

read var_name                   #用键盘输入变量,后面可以连续跟多个变量(中间用空格)

unset Var_name                #清除变量值

export Var_name                #定义环境变量,非环境变量无法在bash开启的子程序中使用。

export PATH=$PATH:/add_path_needed        #环境变量PATH中追加路径

env                #查看环境变量

脚本标量

· ·       #反引号中的内容为系统命令,会执行其中的内容。

‘ ’        #包含的变量当做字符串解释。

" "       #变量解释为对应的变量值。

( )        #由子shell完成

{ }        #由当前shell执行

转义字符:与C语言的转义字符一样,但是 echo 命令中需要增加 -e 方可执行转义。

文件操作

-e 

是否存在

-r

可读

-d 

是否目录 -w 可写
-f 是否文件 -x 可执行

数值测试

test var1 -eq var2

[ var1 -eq var2 ]
shell 比较符号 英文单词

相等

-eq

equal

不相等 -ne not equal
大于 -gt greater than
大于等于 -ge greater equal
小于等于 -le less equal
小于 -lt less than

if 条件语句

if [ condition1 ]; then
    running_coding
elif [ condition2 ]; then
    running_coding
else
    running_coding
fi
# 如果文件夹存在则进入文件夹新建文件
# 如果文件夹不存在则建立文件夹在创建新文件
read -p "Input file name: " filename
if [ -e $filename ]; then
        echo "$filename is exit."
        cd $filename
        echo "Building file"
        touch all.c
else
        echo "$filename is not here"
        mkdir $filename
        cd $filename
        echo "In file and building file"
        touch all.c
fi

for 循环语句

# 形式一
for (( 初始值; 限制值; 步长))
do
    程序段
done

# 形式二
for var in con1 con2 ...
do
    程序段
done
# 判断filename中的子项是文件还是目录
for filename in `ls`
do
        if [ -d $filename ]; then
                echo "$filename is directory."
        elif [ -f $fileneme ]; then
                echo "$filename is a file."
        fi
done

# 计算1~100的和
declare -i i=0
# declare是bash的内建命令,用于声明shell变量、设置属性。
declare -i sum=0    # 强制把sum变量当做int型参数计算。
for (( i=0; i<=100; i++))
do
        sum=$sum+$i;
done
echo "sum is: $sum"

特殊变量

匹配文件名并修改

# Find file through filename and rename

declare -i i=0
for (( i=0; i<=10; i++ ))
do
        touch in_${i}_in_data.bin
done
echo "=== building file is OK!"
ls -l

echo "=== rename file is begining"
declare -i fi=0
for (( fi=0; fi<=10; fi++ ))
do
        name=$(ls in_${fi}_in*)
        #name=$(ls `in_${fi}_in*`)
        echo "-- old file name: $name"
        newname=out_${fi}.bin
        echo "-- new file name: $newname"
        mv $name $newname
        echo "-- rename is OK -- ${fi}"
done

bash 的各种括号

  • (  )    将多个命令组合在一起执行,相当于一个命令组。
  • {  }    和 ( ) 类似,也是将多个命令组合在一起。它们之间的区别是,( ) 是在产生的子shell下执行,而 { } 是在当前的shell下执行。
  • [  ]    与test命令一样,用于比较值以及检查文件类型
  • [[ ]]   是[]的“增强版”,它能够将多个test命令支持的测试组合起来
  • (( ))  做数值运算,如果表达式求值为 0,则设置退出状态为 1;如果求值为非 0 值,则设置为 0。

Guess you like

Origin blog.csdn.net/qq_38844835/article/details/120817680